From 19722ceea34c20c0ea94346ca6faff6184808064 Mon Sep 17 00:00:00 2001 From: Domi31tls Date: Sat, 13 Jun 2026 09:31:14 +0200 Subject: [PATCH] build(gui): add Windows GUI V6 one-click packaging --- build_windows_gui_v6_oneclick.bat | 28 ++++++++++++++ docs/build-windows-oneclick.md | 29 +++++++++++++++ scripts/build_windows_oneclick.ps1 | 59 +++++++++++++++++++++++------- 3 files changed, 102 insertions(+), 14 deletions(-) create mode 100644 build_windows_gui_v6_oneclick.bat diff --git a/build_windows_gui_v6_oneclick.bat b/build_windows_gui_v6_oneclick.bat new file mode 100644 index 0000000..d54c9f1 --- /dev/null +++ b/build_windows_gui_v6_oneclick.bat @@ -0,0 +1,28 @@ +@echo off +setlocal + +set "SCRIPT_DIR=%~dp0" +set "PS_SCRIPT=%SCRIPT_DIR%scripts\build_windows_oneclick.ps1" + +if not exist "%PS_SCRIPT%" ( + echo Script PowerShell introuvable : %PS_SCRIPT% + pause + exit /b 1 +) + +echo Lancement du build Windows GUI V6... +powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -File "%PS_SCRIPT%" -GuiV6 +set "EXITCODE=%ERRORLEVEL%" + +if not "%EXITCODE%"=="0" ( + echo. + echo Le build GUI V6 a echoue. Code retour : %EXITCODE% + pause + exit /b %EXITCODE% +) + +echo. +echo Build GUI V6 termine avec succes. +echo Sortie attendue : release\Anonymisation-Setup.exe +pause +exit /b 0 diff --git a/docs/build-windows-oneclick.md b/docs/build-windows-oneclick.md index 6d70212..d07700e 100644 --- a/docs/build-windows-oneclick.md +++ b/docs/build-windows-oneclick.md @@ -3,9 +3,11 @@ Le packaging Windows standard du projet repose sur : - `build_windows_oneclick.bat` +- `build_windows_gui_v6_oneclick.bat` - `build_windows_installer_oneclick.bat` - `scripts/build_windows_oneclick.ps1` - `anonymisation_onefile.spec` +- `anonymisation_gui_v6_onefile.spec` - `installer/Anonymisation.iss` ## Usage @@ -65,6 +67,33 @@ Pour ne générer que l'exécutable et le ZIP : powershell -ExecutionPolicy Bypass -File .\scripts\build_windows_oneclick.ps1 -SkipInstaller ``` +## GUI V6 + +La GUI V6 utilise le même pipeline PyInstaller + Inno Setup, mais avec l'entrée +`Pseudonymisation_Gui_V6.py` et la spec dédiée `anonymisation_gui_v6_onefile.spec`. +Le comportement historique reste le défaut du script one-click. + +Sur la machine Windows de build : + +```powershell +powershell -ExecutionPolicy Bypass -File .\scripts\build_windows_oneclick.ps1 -GuiV6 +``` + +ou double-cliquer sur : + +```text +build_windows_gui_v6_oneclick.bat +``` + +Sorties attendues identiques : + +- `dist\Anonymisation.exe` : exécutable GUI V6 ; +- `release\Anonymisation-Windows\Anonymisation.exe` : paquet local ; +- `release\Anonymisation-Windows.zip` : archive locale ; +- `release\Anonymisation-Setup.exe` : installateur destiné au portail après GO + diffusion ; +- `release\Anonymisation.exe.sha256.txt` : hash de l'exécutable. + ## Important - les utilisateurs finaux n'ont pas besoin d'installer Python diff --git a/scripts/build_windows_oneclick.ps1 b/scripts/build_windows_oneclick.ps1 index e626cd1..b5a69ce 100644 --- a/scripts/build_windows_oneclick.ps1 +++ b/scripts/build_windows_oneclick.ps1 @@ -1,4 +1,5 @@ param( + [switch]$GuiV6, [switch]$SkipZip, [switch]$SkipInstaller, [switch]$SkipRequirements, @@ -170,7 +171,9 @@ function Invoke-CodeSigning { $ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path $ProjectRoot = (Resolve-Path (Join-Path $ScriptDir "..")).Path $SigningConfigPath = Join-Path $ProjectRoot "build_signing.local.ps1" -$SpecPath = Join-Path $ProjectRoot "anonymisation_onefile.spec" +$BuildFlavor = if ($GuiV6) { "GUI V6" } else { "GUI historique" } +$SpecFileName = if ($GuiV6) { "anonymisation_gui_v6_onefile.spec" } else { "anonymisation_onefile.spec" } +$SpecPath = Join-Path $ProjectRoot $SpecFileName $InstallerScriptPath = Join-Path $ProjectRoot "installer\Anonymisation.iss" $BuildInfoPath = Join-Path $ProjectRoot "build_info.py" $ModelPath = Join-Path $ProjectRoot "models\camembert-bio-deid\onnx\model.onnx" @@ -185,22 +188,48 @@ $ZipPath = Join-Path $ReleaseDir "Anonymisation-Windows.zip" $HashPath = Join-Path $ReleaseDir "Anonymisation.exe.sha256.txt" $InstallerPath = Join-Path $ReleaseDir "Anonymisation-Setup.exe" $ReadmePath = Join-Path $PackageDir "README.txt" -$RequiredSourceFiles = @( - "launcher.py", - "Pseudonymisation_Gui_V5.py", - "anonymizer_core_refactored_onnx.py", - "admin_rules.py", - "config_defaults.py", - "profile_defaults.py", - "gui_batch_paths.py", - "manual_masking.py", - "pdf_mask_designer.py", - "format_converter.py", - "camembert_ner_manager.py" -) +if ($GuiV6) { + $RequiredSourceFiles = @( + "Pseudonymisation_Gui_V6.py", + "gui_v6\app.py", + "gui_v6\theme.py", + "gui_v6\ui_kit.py", + "gui_v6\engine_bridge.py", + "gui_v6\processing_runner.py", + "gui_v6\config_state.py", + "gui_v6\license_client.py", + "gui_v6\license_store.py", + "gui_v6\machine_id.py", + "anonymizer_core_refactored_onnx.py", + "admin_rules.py", + "config_defaults.py", + "profile_defaults.py", + "gui_batch_paths.py", + "manual_masking.py", + "pdf_mask_designer.py", + "format_converter.py", + "camembert_ner_manager.py" + ) +} else { + $RequiredSourceFiles = @( + "launcher.py", + "Pseudonymisation_Gui_V5.py", + "anonymizer_core_refactored_onnx.py", + "admin_rules.py", + "config_defaults.py", + "profile_defaults.py", + "gui_batch_paths.py", + "manual_masking.py", + "pdf_mask_designer.py", + "format_converter.py", + "camembert_ner_manager.py" + ) +} Write-Step "Préparation du build Windows" Write-Host "Projet : $ProjectRoot" +Write-Host "Variante : $BuildFlavor" +Write-Host "Spec PyInstaller : $SpecFileName" Require-Path -PathValue $SpecPath -Label "Spec PyInstaller" Require-Path -PathValue $InstallerScriptPath -Label "Script installateur Inno Setup" @@ -261,6 +290,7 @@ try { BUILD_DATE = "$buildDate" BUILD_COMMIT = "$commit" BUILD_BRANCH = "$branch" +BUILD_FLAVOR = "$BuildFlavor" "@ Set-Content -Path $BuildInfoPath -Value $buildInfo -Encoding UTF8 Write-Host "Build info : $buildDate / $branch / $commit" @@ -317,6 +347,7 @@ Build : - Date : $buildDate - Branche : $branch - Commit : $commit +- Variante : $BuildFlavor - Signature : $script:SignatureSummary "@ Set-Content -Path $ReadmePath -Value $readme -Encoding UTF8