Files
openai-code-script-poc/scripts/build-win.ps1
2025-10-15 22:54:03 +08:00

77 lines
2.2 KiB
PowerShell

$ErrorActionPreference = 'Stop'
<#
.SYNOPSIS
Build a single-file, no-dependency Windows binary for BgVisionAgent.
.DESCRIPTION
Uses PyInstaller to bundle the app and its Python dependencies into a single
`BgVisionAgent.exe` suitable for systems without Python installed.
Run this on Windows with Python 3.11 or 3.12 installed.
.EXAMPLE
powershell -ExecutionPolicy Bypass -File scripts\build-win.ps1
.NOTES
- Output: dist\BgVisionAgent.exe
- You may need to run the resulting EXE as Administrator for global hotkeys.
- To publish, copy the EXE to `bin/BgVisionAgent.exe` in this repo (or
upload to your hosting and set BG_BINARY_URL accordingly in bootstrap).
#>
function Assert-Exe($exe) {
$exists = Get-Command $exe -ErrorAction SilentlyContinue
if (-not $exists) { throw "Required tool not found in PATH: $exe" }
}
Write-Host "[build] Preparing isolated venv..." -ForegroundColor Cyan
$root = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $root
Set-Location ..
$venv = Join-Path (Get-Location) ".build-venv"
if (Test-Path $venv) { Remove-Item $venv -Recurse -Force }
try {
py -3 -m venv $venv
} catch {
python -m venv $venv
}
$pip = Join-Path $venv "Scripts/pip.exe"
$python = Join-Path $venv "Scripts/python.exe"
& $pip install --upgrade pip wheel setuptools | Out-Null
& $pip install -r requirements.txt | Out-Null
& $pip install pyinstaller | Out-Null
Write-Host "[build] Running PyInstaller (one-file, windowed)..." -ForegroundColor Cyan
$common = @(
"--noconfirm",
"--clean",
"-F",
"-w",
"-n","BgVisionAgent",
"--collect-all","openai",
"--collect-all","pyautogui",
"--collect-all","pyscreeze",
"--collect-all","mouseinfo",
"--collect-all","pymsgbox",
"--collect-all","pytweening",
"--collect-all","pyperclip",
"--collect-all","keyboard",
"--collect-all","PIL",
"--collect-all","certifi",
"--hidden-import","win32api",
"--hidden-import","win32gui",
"--hidden-import","win32con"
)
& $python -m PyInstaller @common bg_agent/__main__.py
Write-Host "[build] Done. Binary at: dist\\BgVisionAgent.exe" -ForegroundColor Green
Write-Host "[build] Tip: copy dist\\BgVisionAgent.exe to bin\\BgVisionAgent.exe for bootstrap downloads." -ForegroundColor DarkGray