Files
rpa_vision_v3/deploy/installer
Dom d686c3ac22
Some checks failed
tests / Lint (ruff + black) (push) Failing after 1m45s
tests / Tests unitaires (sans GPU) (push) Failing after 1m47s
tests / Tests sécurité (critique) (push) Has been skipped
feat(deploy): installation 1-clic non-IT — raccourci Bureau + Demarrage auto
Ajoute Installer-Lea.bat (CRLF/ASCII, chcp 65001) au paquet Lea complet :
- copie le paquet (python-embed inclus) vers %LOCALAPPDATA%\Lea (per-user,
  emplacement stable via robocopy, fallback xcopy) ;
- cree un raccourci Bureau + un raccourci dans le dossier Demarrage
  (lancement auto a l'ouverture de session) via WScript.Shell, cibles
  python-embed\pythonw.exe run_agent_v1.py (pas de console) ;
- icone optionnelle si un .ico est present dans le paquet (best-effort,
  sinon icone par defaut) ;
- lance Lea une premiere fois, message de fin clair.

Application SYSTRAY -> pas de service Windows (session 0 sans UI) :
dossier Demarrage + raccourci, per-user, sans admin/UAC.

LISEZMOI.txt du paquet remplacee par LISEZMOI-autonome.txt (le flux
install.bat + Python systeme n'existe plus dans ce paquet). build_package_full.sh
integre ces deux assets et les valide dans le ZIP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 17:04:20 +02:00
..

Installeur Lea (Inno Setup)

Installeur Windows professionnel pour Lea, remplacant le ZIP + install.bat artisanal.

Resume

Produit Lea-Setup-v1.0.0.exe dans deploy/releases/.

Caracteristiques :

  • Interface francaise, moderne (style wizard Windows 10/11)
  • Page custom d'enrollment (nom, email, ID interne, URL serveur, token)
  • Generation automatique de machine_id unique (GUID + hash hostname)
  • config.txt genere a partir des donnees saisies
  • Option bundle Python 3.12 embedded (postes sans droits admin)
  • Raccourci demarrage automatique (shell:startup) optionnel
  • Notification serveur a l'install / desinstall (best-effort)
  • Installation silencieuse : /VERYSILENT /CONFIG=enroll.txt
  • Desinstallation propre : kill process, cleanup, export logs

Pre-requis pour compiler

Inno Setup 6.2+

Telecharger depuis jrsoftware.org et installer innosetup-6.x.exe. Le compilateur ISCC.exe doit etre accessible.

Alternative Linux : Wine

# Installation
winetricks innosetup
# Ou : telecharger innosetup-6.x.exe et lancer : wine innosetup-6.x.exe

# Verifier
ls "$HOME/.wine/drive_c/Program Files (x86)/Inno Setup 6/ISCC.exe"

Le script build_installer.sh detecte automatiquement Wine si present.

Build local

Build complet (staging + compilation)

cd rpa_vision_v3
./deploy/installer/build_installer.sh

Produit deploy/releases/Lea-Setup-v1.0.0.exe.

Build staging uniquement (sans ISCC)

./deploy/installer/build_installer.sh --stage-only

Prepare deploy/build/installer_staging/ puis affiche la commande ISCC a executer sur Windows.

Nettoyer avant

./deploy/installer/build_installer.sh --clean

Build sur Windows (recommande pour production)

  1. Copier le dossier deploy/ sur le PC Windows
  2. Ouvrir deploy/installer/Lea.iss dans Inno Setup Compiler
  3. Build > Compile (ou F9)
  4. Recuperer deploy/releases/Lea-Setup-v1.0.0.exe

Python 3.12 embedded (optionnel)

Pour bundler Python directement dans l'installeur (evite d'exiger que les postes aient Python installe) :

# Sur Linux
cd deploy/installer
wget https://www.python.org/ftp/python/3.12.8/python-3.12.8-embed-amd64.zip
mkdir python-3.12-embed
unzip python-3.12.8-embed-amd64.zip -d python-3.12-embed/

Le staging copie automatiquement ce dossier si present. Le composant "pythonembed" devient alors selectionnable dans l'installeur.

Le script configure_embed.ps1 :

  1. Patche python312._pth pour activer import site
  2. Installe pip via get-pip.py
  3. Installe requirements_agent.txt
  4. Reecrit Lea.bat pour pointer sur python-embed\pythonw.exe

Installation silencieuse (deploiement de masse)

Pour deployer sans interaction utilisateur (GPO, SCCM, script PowerShell) :

  1. Preparer un fichier enroll.txt par poste (ou un commun) :

    USER_NAME=Jean Dupont
    USER_EMAIL=jean.dupont@aivanov.com
    USER_ID=EMP-00123
    SERVER_URL=https://lea.labs.laurinebazin.design/api/v1
    API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  2. Lancer l'installeur :

    Lea-Setup-v1.0.0.exe /VERYSILENT /CONFIG=C:\temp\enroll.txt /DIR="C:\Lea"
    

Parametres Inno Setup utiles :

  • /VERYSILENT : aucune UI
  • /SILENT : barre de progression seulement
  • /DIR="..." : dossier d'installation
  • /LOG="install.log" : log d'installation
  • /TASKS="startmenuicon,autostart" : composants a installer (voir [Tasks] et [Components])
  • /CONFIG=path : fichier d'enrollment (custom, specifique a Lea)

Signature du .exe (SmartScreen)

Sans signature, Windows SmartScreen affiche un avertissement rouge ("Cet editeur est inconnu"). Pour eviter cela, signer l'installeur avec un certificat code-signing.

Options de certificat

  1. Certificat OV (Organization Validation) : ~200-400 EUR/an

    • Sectigo, DigiCert, GlobalSign
    • SmartScreen apprend la reputation progressivement (~30 installations)
    • Livre sur token USB FIPS depuis 2023
  2. Certificat EV (Extended Validation) : ~400-700 EUR/an

    • Reputation SmartScreen immediate (pas d'avertissement des la 1ere install)
    • Strict : obligatoirement sur token USB

Signature manuelle (avec signtool.exe du Windows SDK)

signtool sign ^
  /tr http://timestamp.sectigo.com ^
  /td sha256 ^
  /fd sha256 ^
  /a ^
  "deploy\releases\Lea-Setup-v1.0.0.exe"

signtool verify /pa /v "deploy\releases\Lea-Setup-v1.0.0.exe"

Signature automatique dans Inno Setup

Ajouter dans Lea.iss apres [Setup] :

SignTool=signtool $f

Et declarer le signtool via ISCC.exe /Ssigntool=... au build.

Solution interne (certif AIVANOV)

Si AIVANOV a deja un certificat code-signing, le token USB + mot de passe suffisent. Sinon, Sectigo OV est un bon choix d'entree de gamme.

Structure du dossier installer/

deploy/installer/
├── Lea.iss                  # Script Inno Setup principal
├── build_installer.sh       # Helper bash (staging + ISCC)
├── uninstall_lea.ps1        # Script de desinstallation propre
├── configure_embed.ps1      # Configuration Python embedded
├── config_template.txt      # Modele config pour /VERYSILENT /CONFIG=
├── LICENSE.txt              # CGU affichees dans la page licence
└── README.md                # Ce fichier

Test de l'installeur

  1. Machine de test Windows 11 (VM ou PC physique, idealement sans Python)
  2. Copier Lea-Setup-v1.0.0.exe sur la machine
  3. Double-cliquer : verifier que l'enrollment s'affiche en francais
  4. Tester l'installation (avec et sans Python deja installe)
  5. Verifier le fichier C:\Program Files\Lea\config.txt genere
  6. Verifier le raccourci shell:startup (si option cochee)
  7. Lancer Lea, verifier la connexion au serveur
  8. Tester la desinstallation depuis "Ajout/suppression de programmes"

Test automatise (PowerShell, sur la VM)

# Installation silencieuse
$cfg = "C:\temp\enroll.txt"
@"
USER_NAME=Test Automatique
USER_EMAIL=test@aivanov.com
"@ | Out-File -Encoding ASCII $cfg

.\Lea-Setup-v1.0.0.exe /VERYSILENT /CONFIG=$cfg /LOG="C:\temp\install.log"

# Verifications
Test-Path "C:\Program Files\Lea\config.txt"
Get-Content "C:\Program Files\Lea\machine_id.txt"

# Desinstallation silencieuse
$uninst = Get-WmiObject Win32_Product | Where-Object { $_.Name -like "Lea*" }
$uninst.Uninstall()

Notes et limites connues

  • Endpoint serveur /agents/enroll et /agents/uninstall : pas encore implemente cote serveur (avril 2026). L'installeur envoie la requete en best-effort, une erreur est silencieusement ignoree. A implementer dans agent_v0/server_v1/api_stream.py quand necessaire.
  • Python embedded : le patch python312._pth + pip bootstrap fonctionne mais augmente la taille de l'installeur (~25 MB). A reserver aux postes sans Python.
  • Code signing : indispensable pour deploiement hopital/client. Prevoir le budget certificat (400-700 EUR/an) dans la roadmap commerciale.

Historique

  • v1.0.0 (2026-04-13) : Premiere version de l'installeur Inno Setup.