#Requires -Version 5.1 <# .SYNOPSIS After git pull: upgrade pip, install deps, build ProxyChainManager.exe, copy to Desktop, create "Proxy God.lnk". .DESCRIPTION Requires Python 3.10+ on PATH (python.exe) or the Windows py launcher (py -3). Does not auto-install Python; see README for winget one-liner if needed. #> $ErrorActionPreference = "Stop" $root = Split-Path -Parent (Split-Path -Parent $MyInvocation.MyCommand.Path) Set-Location $root function Resolve-PythonExe { if (Get-Command py -ErrorAction SilentlyContinue) { try { $out = (& py -3 -c "import sys; print(sys.executable)" 2>$null).Trim() if ($out -and (Test-Path -LiteralPath $out)) { return $out } } catch { } } $p = Get-Command python.exe -ErrorAction SilentlyContinue if ($p) { return $p.Source } throw ( "Python 3.10+ not found (tried 'py -3' and 'python'). Install, then re-run:`n" + " winget install Python.Python.3.12 --accept-package-agreements --accept-source-agreements`n" + "Or https://www.python.org/downloads/ (enable 'Add python.exe to PATH')." ) } $py = Resolve-PythonExe Write-Host "Using: $py" & $py -c "import sys; assert sys.version_info >= (3, 10), 'Need Python 3.10+'; print(sys.version)" Write-Host "`n== pip (upgrade) ==" & $py -m pip install --upgrade pip Write-Host "`n== dependencies + PyInstaller ==" & $py -m pip install -r "$root\requirements.txt" & $py -m pip install pyinstaller Write-Host "`n== PyInstaller (using ProxyChainManager.spec) ==" # Always build from the spec — it bundles signup_extension/, world_map.png, # customtkinter assets, and the right hidden imports. Do NOT override with # CLI flags or the data files will be missing from the .exe. $spec = Join-Path $root "ProxyChainManager.spec" if (-not (Test-Path $spec)) { throw "Spec not found: $spec" } & $py -m PyInstaller --noconfirm --clean $spec if ($LASTEXITCODE -ne 0) { throw "PyInstaller failed (exit $LASTEXITCODE)" } $distExe = Join-Path $root "dist\ProxyChainManager.exe" if (-not (Test-Path $distExe)) { throw "Build failed: missing $distExe" } $desk = [Environment]::GetFolderPath("Desktop") $deskExe = Join-Path $desk "ProxyChainManager.exe" Copy-Item -LiteralPath $distExe -Destination $deskExe -Force Write-Host "Copied: $deskExe" Write-Host "`n== Desktop shortcut ==" & powershell -NoProfile -ExecutionPolicy Bypass -File "$root\scripts\create_desktop_shortcut.ps1" Write-Host "`nDone. Launch from Desktop: Proxy God.lnk (or ProxyChainManager.exe)"