@echo off REM ======================================================================== REM build-proserve-zip.bat REM Crée le ZIP de release d'une version PROSERVE prêt à uploader sur OVH. REM REM Usage : REM build-proserve-zip.bat 1.5.3 REM REM Le script : REM 1. Lit version\proserve-X.Y.Z\ (binaires UE5 + _migrations\ + _report\) REM 2. Compresse en version\proserve-X.Y.Z.zip REM 3. Affiche taille + SHA-256 (à recopier dans le backoffice si tu veux REM eviter le hash automatique côté serveur, sinon laisse le serveur le REM faire au moment du « Hasher + signer ») REM REM Outils : REM - 7-Zip si installé (multi-threading, ~3-5x plus rapide sur 14 Go) REM - PowerShell Compress-Archive en fallback (mono-thread, lent) REM REM Sortie : version\proserve-X.Y.Z.zip à uploader vers REM www/PS_Launcher/builds/proserve-X.Y.Z.zip via SFTP. REM ======================================================================== setlocal EnableDelayedExpansion if "%~1"=="" ( echo. echo Usage : build-proserve-zip.bat ^ echo Exemple : build-proserve-zip.bat 1.5.3 echo. echo Versions disponibles dans version\ : for /D %%D in ("%~dp0version\proserve-*") do echo %%~nxD echo. exit /b 1 ) set "VERSION=%~1" set "REPO=%~dp0" set "SRC=%REPO%version\proserve-%VERSION%" set "OUT=%REPO%version\proserve-%VERSION%.zip" if not exist "%SRC%" ( echo [ERREUR] Dossier source introuvable : %SRC% echo Liste des versions disponibles : for /D %%D in ("%REPO%version\proserve-*") do echo %%~nxD exit /b 1 ) REM Sanity-check que les sous-dossiers attendus sont là if not exist "%SRC%\PROSERVE_UE_5_5.exe" ( echo [WARN] %SRC%\PROSERVE_UE_5_5.exe absent — c'est normal ? Continuer dans 5s, Ctrl+C pour annuler... timeout /t 5 >nul ) if not exist "%SRC%\_migrations" ( echo [WARN] %SRC%\_migrations\ absent — pas de migrations DB dans cette release. ) if not exist "%SRC%\_report" ( echo [WARN] %SRC%\_report\ absent — pas d'outil Report dans cette release. ) if exist "%OUT%" ( echo [INFO] Suppression du zip existant : %OUT% del /Q "%OUT%" ) REM ----- 7-Zip si disponible ----- set "SEVENZIP=" if exist "C:\Program Files\7-Zip\7z.exe" set "SEVENZIP=C:\Program Files\7-Zip\7z.exe" if exist "C:\Program Files (x86)\7-Zip\7z.exe" set "SEVENZIP=C:\Program Files (x86)\7-Zip\7z.exe" echo. echo ======================================================================== echo Compression de proserve-%VERSION% (peut prendre 5-30 min selon la taille) echo Source : %SRC% echo Sortie : %OUT% echo ======================================================================== echo. if defined SEVENZIP ( echo [INFO] Utilisation de 7-Zip multi-thread (rapide) REM -tzip format ZIP standard ^(compatible avec ce que le launcher attend^) REM -mx=5 compression normale ^(mx=9 ultra serait 2x plus lent pour ~5%% de gain^) REM -mmt=on multi-thread REM -bsp1 progress sur stderr REM Le * en fin de chemin source = on zippe le CONTENU du dossier, pas le dossier lui-meme "%SEVENZIP%" a -tzip -mx=5 -mmt=on -bsp1 "%OUT%" "%SRC%\*" set "EXITCODE=!ERRORLEVEL!" ) else ( echo [INFO] 7-Zip non trouve, fallback sur PowerShell Compress-Archive ^(lent^). echo Pour accelerer, installe 7-Zip depuis https://www.7-zip.org/ echo. powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "Compress-Archive -Path '%SRC%\*' -DestinationPath '%OUT%' -CompressionLevel Optimal -Force" set "EXITCODE=!ERRORLEVEL!" ) if !EXITCODE! NEQ 0 ( echo. echo [ECHEC] Compression echouee avec le code !EXITCODE!. exit /b !EXITCODE! ) if not exist "%OUT%" ( echo [ECHEC] Le fichier %OUT% n'a pas ete cree. exit /b 1 ) echo. echo ======================================================================== echo [OK] Zip cree avec succes echo ======================================================================== echo. echo Fichier : %OUT% for %%I in ("%OUT%") do ( set "SIZE=%%~zI" echo Taille : !SIZE! octets ^(~%%~zI bytes^) ) echo. echo Calcul du SHA-256 ^(peut prendre 30s-2min selon la taille^)... powershell -NoProfile -Command ^ "$h = (Get-FileHash '%OUT%' -Algorithm SHA256).Hash.ToLower(); Write-Host SHA-256 : $h" echo. echo ======================================================================== echo Prochaines etapes : echo 1. SFTP upload vers : www/PS_Launcher/builds/proserve-%VERSION%.zip echo 2. Backoffice -^> Versions -^> verifier que l'entree v%VERSION% existe echo ^(sinon ajoute-la avec date d'expiration min_license_date^) echo 3. Cliquer ligne v%VERSION% -^> bouton "Hasher cette version" echo ^(ou bouton global "Hasher les versions + signer"^) echo 4. Le manifest est re-signe Ed25519, les clients verront la version echo au prochain "Verifier les MAJ". echo ======================================================================== echo. endlocal pause