@echo off setlocal enabledelayedexpansion REM === PATH SETUP === set PARENT_DIR=%~dp0.. set CONFIG_DIR=%PARENT_DIR%\config set CONFIG_FILE=%PARENT_DIR%\config.json set ENV_FILE=%PARENT_DIR%\.env set ICON_FILE=%PARENT_DIR%\data\assets\icon.png REM === Extract values from config.json === for /f "delims=" %%i in ('powershell -NoProfile -Command ^ "Get-Content '%CONFIG_FILE%' | ConvertFrom-Json | Select-Object -ExpandProperty icon_path"') do set ICON_PATH=%%i for /f "delims=" %%i in ('powershell -NoProfile -Command ^ "Get-Content '%CONFIG_FILE%' | ConvertFrom-Json | Select-Object -ExpandProperty app_name"') do set APP_NAME=%%i for /f "delims=" %%i in ('powershell -NoProfile -Command ^ "Get-Content '%CONFIG_FILE%' | ConvertFrom-Json | Select-Object -ExpandProperty architecture"') do set ARCHITECTURE=%%i REM === Use the Python interpreter provided by the environment === set SYSTEM_PYTHON=python if exist "%ENV_FILE%" ( for /f "usebackq tokens=1,* delims==" %%A in ("%ENV_FILE%") do if /I "%%A"=="PYTHON_PATH" set "SYSTEM_PYTHON=%%B" ) set VENV_PATH=%CONFIG_DIR%\WINenv_%ARCHITECTURE% set EXE_NAME=%APP_NAME%.exe set PYTHON_IN_VENV=%VENV_PATH%\Scripts\python.exe set BUILD_DIR=%PARENT_DIR%\build set ZIP_FILE=%BUILD_DIR%\%APP_NAME%.zip REM === Verify Python existence === "%SYSTEM_PYTHON%" --version >nul 2>&1 if errorlevel 1 ( echo [ERROR] Python interpreter not found in PATH. exit /b 1 ) REM === Check if virtual environment exists === if not exist "%VENV_PATH%\Scripts\activate.bat" ( echo [INFO] Virtual environment not found. Creating... "%SYSTEM_PYTHON%" -m venv "%VENV_PATH%" "%PYTHON_IN_VENV%" -m pip install --upgrade pip "%PYTHON_IN_VENV%" -m pip install -r "%CONFIG_DIR%\requirements.txt" ) else ( echo [INFO] Virtual environment found. ) REM === Run PyInstaller === "%PYTHON_IN_VENV%" -m PyInstaller ^ --distpath "%BUILD_DIR%" ^ --workpath "%BUILD_DIR%\dist" ^ --clean ^ "%CONFIG_DIR%\BUILD.spec" REM === Clean build cache === rmdir /s /q "%BUILD_DIR%\dist" endlocal