2026-04-23 14:37:19 +08:00

96 lines
3.6 KiB
Batchfile

@echo off
chcp 65001 >nul 2>&1
setlocal
echo ============================================================
echo BidPartner - Build Desktop EXE
echo ============================================================
echo.
:: ── 1. Check Python ────────────────────────────────────────────────────────
python --version >nul 2>&1
if errorlevel 1 (
echo [ERROR] Python not found. Please install Python 3.9+.
pause & exit /b 1
)
:: ── 2. Install / upgrade PyInstaller ───────────────────────────────────────
echo [Step 1/4] Installing PyInstaller...
pip install --quiet --upgrade pyinstaller
if errorlevel 1 (
echo [ERROR] Failed to install PyInstaller.
pause & exit /b 1
)
:: ── 3. Install project dependencies (if not already installed) ─────────────
echo [Step 2/4] Checking dependencies...
pip install --quiet -r requirements.txt
if errorlevel 1 (
echo [ERROR] Failed to install dependencies.
pause & exit /b 1
)
:: ── 4. Sanitize settings.json - REMOVE API KEYS before build ───────────────
echo [Step 3/4] Sanitizing settings (removing API keys from build)...
if exist "data\settings.json" (
:: Back up real settings
copy /y "data\settings.json" "data\settings.json.bak" >nul
)
:: Write a clean settings file with no real keys
(
echo {
echo "model_provider": "deepseek",
echo "qwen_api_key": "sk-your-qwen-key",
echo "qwen_model": "qwen3.6-plus",
echo "openai_api_key": "sk-your-openai-key",
echo "openai_model": "gpt-4o",
echo "deepseek_api_key": "sk-your-deepseek-key",
echo "deepseek_model": "deepseek-chat",
echo "max_concurrent": 5,
echo "content_volume": "standard"
echo }
) > "data\settings_clean.tmp"
:: ── 5. Build ────────────────────────────────────────────────────────────────
echo [Step 4/4] Building EXE with PyInstaller...
echo (This may take 3-10 minutes on first run)
echo.
:: Clean previous build artifacts
if exist "build" rd /s /q "build" >nul 2>&1
if exist "dist\BidPartner" rd /s /q "dist\BidPartner" >nul 2>&1
pyinstaller bid_partner.spec --noconfirm
set BUILD_RESULT=%errorlevel%
:: ── Restore real settings ───────────────────────────────────────────────────
if exist "data\settings.json.bak" (
copy /y "data\settings.json.bak" "data\settings.json" >nul
del /f /q "data\settings.json.bak" >nul 2>&1
)
del /f /q "data\settings_clean.tmp" >nul 2>&1
if %BUILD_RESULT% neq 0 (
echo.
echo [ERROR] PyInstaller build failed. See output above for details.
pause & exit /b 1
)
:: ── 6. Result ───────────────────────────────────────────────────────────────
echo.
echo ============================================================
echo Build SUCCESSFUL!
echo Output: dist\BidPartner\bid_partner.exe
echo ============================================================
echo.
echo The 'dist\BidPartner' folder is your distributable package.
echo Users only need this folder - no Python installation required.
echo Each user must set their own API key in the app settings.
echo.
:: Open the output folder
explorer "dist\BidPartner" >nul 2>&1
endlocal
pause