generated from LouisMazin/PythonApplicationTemplate
92 lines
2.9 KiB
Batchfile
92 lines
2.9 KiB
Batchfile
@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
|