@echo off setlocal enabledelayedexpansion REM === PATH SETUP === set PARENT_DIR=%~dp0.. set CONFIG_FILE=%PARENT_DIR%\config.json set ICON_FILE=%PARENT_DIR%\data\assets\icon.png set ENV_FILE=%PARENT_DIR%\.env REM Check if .env file exists if not exist "%ENV_FILE%" ( echo [ERROR] .env file not found. Please copy .env.example to .env and configure it. exit /b 1 ) 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 === Extract python path from .env file === for /f "usebackq tokens=2 delims==" %%i in (`findstr "PYTHON_PATH" "%ENV_FILE%"`) do set SYSTEM_PYTHON=%%i set VENV_PATH=%PARENT_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 === if not exist "%SYSTEM_PYTHON%" ( echo [ERROR] Python not found at: %SYSTEM_PYTHON% 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 "%PARENT_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 ^ "%PARENT_DIR%\BUILD.spec" REM === Clean build cache === rmdir /s /q "%BUILD_DIR%\dist" REM === Create ZIP === echo [INFO] Creating ZIP archive... set TEMP_ZIP_DIR=%BUILD_DIR%\temp_zip REM Remove old temp dir if exists if exist "%TEMP_ZIP_DIR%" rmdir /s /q "%TEMP_ZIP_DIR%" mkdir "%TEMP_ZIP_DIR%" REM Copy compiled app - tout le contenu du build sauf les ZIP existants move /Y "%BUILD_DIR%\%EXE_NAME%" "%TEMP_ZIP_DIR%\" REM Copy config.json copy "%CONFIG_FILE%" "%TEMP_ZIP_DIR%\" /Y REM Copy icon.png copy "%ICON_FILE%" "%TEMP_ZIP_DIR%\" /Y REM Copy data/lang xcopy /E /I /Y "%PARENT_DIR%\data\lang" "%TEMP_ZIP_DIR%\lang" REM Remove old ZIP if exists if exist "%ZIP_FILE%" del "%ZIP_FILE%" REM Create ZIP powershell -NoProfile -Command "Add-Type -AssemblyName 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::CreateFromDirectory('%TEMP_ZIP_DIR%', '%ZIP_FILE%')" REM Remove temp folder rmdir /s /q "%TEMP_ZIP_DIR%" echo [INFO] ZIP created at: %ZIP_FILE% endlocal