Param( [switch]$OneFile = $false, [string]$Name = "DocxCreator" ) $ErrorActionPreference = "Stop" Set-StrictMode -Version Latest # Go to script directory Set-Location -Path $PSScriptRoot # 1) Create/activate venv if (-not (Test-Path .\.venv)) { python -m venv .venv } . .\.venv\Scripts\Activate.ps1 # 2) Install deps pip install --upgrade pip > $null pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pyinstaller # 3) Ensure default.json exists (copy from config.json if present) if ((Test-Path .\config.json) -and -not (Test-Path .\default.json)) { Copy-Item .\config.json .\default.json -Force } # 4) Build Write-Host "Building with PyInstaller..." -ForegroundColor Yellow # 首先清理旧的构建文件 Write-Host "Cleaning old build files..." -ForegroundColor Yellow # 尝试优雅地清理,如果失败则跳过 try { if (Test-Path .\build) { Remove-Item .\build -Recurse -Force -ErrorAction Stop Write-Host "Removed build directory" -ForegroundColor Green } } catch { Write-Host "Warning: Could not remove build directory (may be in use)" -ForegroundColor Yellow } try { if (Test-Path .\dist) { Remove-Item .\dist -Recurse -Force -ErrorAction Stop Write-Host "Removed dist directory" -ForegroundColor Green } } catch { Write-Host "Warning: Could not remove dist directory (may be in use)" -ForegroundColor Yellow Write-Host "Continuing with build anyway..." -ForegroundColor Yellow } # 使用修复的spec文件构建 if ($OneFile) { Write-Host "OneFile mode not recommended for PySide6 apps due to DLL issues" -ForegroundColor Yellow Write-Host "Using OneDir mode instead..." -ForegroundColor Yellow } # 总是使用OneDir模式,因为PySide6的DLL依赖问题 pyinstaller --noconfirm --clean .\docx_creator_fixed.spec Write-Host "Build complete. Output at: $(Join-Path $PSScriptRoot 'dist')\$Name" -ForegroundColor Green