@echo off chcp 65001 >nul setlocal enabledelayedexpansion REM Build flow: PyInstaller -> generate ISS -> optional ISCC compile REM Requirements: REM - Python + PyInstaller REM - Inno Setup (optional, for auto compile) cd /d "%~dp0" echo. echo === Check Python architecture === for /f %%i in ('python -c "import platform; print(platform.architecture()[0][:2])"') do set "PY_BITS=%%i" if not defined PY_BITS goto :pycheck_fail if not "%PY_BITS%"=="64" goto :pycheck_fail echo Python architecture: %PY_BITS%-bit echo. echo === Clean old build artifacts === if exist "build" rmdir /s /q "build" if exist "dist" rmdir /s /q "dist" echo. echo === Build main app (onedir) === python -m PyInstaller --noconfirm --onedir --name niumasoftware --windowed ^ --icon "logo.ico" ^ --add-data "assets;assets" ^ --add-data "logo.png;." ^ main.py if errorlevel 1 goto :fail echo. echo === Build update helper (onefile -> dist\niumasoftware) === python -m PyInstaller --noconfirm --onefile --name update_helper --console --distpath dist\niumasoftware ^ --icon "logo.ico" ^ update_helper.py if errorlevel 1 goto :fail echo. echo === Generate Inno Setup script with AppVersion === python installer\build_installer.py if errorlevel 1 goto :fail echo. echo === (Optional) Compile installer via ISCC.exe === set "ISCC=" if exist "%ProgramFiles(x86)%\Inno Setup 6\ISCC.exe" set "ISCC=%ProgramFiles(x86)%\Inno Setup 6\ISCC.exe" if exist "%ProgramFiles%\Inno Setup 6\ISCC.exe" set "ISCC=%ProgramFiles%\Inno Setup 6\ISCC.exe" if not defined ISCC ( echo ISCC.exe not found, skip compiling installer. echo You can compile: installer\niumasoftware.generated.iss goto :ok ) echo Using ISCC: "%ISCC%" "%ISCC%" "installer\niumasoftware.generated.iss" if errorlevel 1 goto :fail :ok echo. echo === Done === echo dist\niumasoftware\niumasoftware.exe echo dist\niumasoftware\update_helper.exe echo installer\niumasoftware.generated.iss echo. exit /b 0 :pycheck_fail echo. echo ERROR: Current python is not 64-bit, cannot build 64-bit installer payload. echo Please use 64-bit Python, for example: echo py -3.13-64 -m pip install -r requirements.txt echo py -3.13-64 -m pip install pyinstaller echo py -3.13-64 -m PyInstaller --version echo Then rerun this script. exit /b 1 :fail echo. echo Build failed. exit /b 1