Deux canaux de déploiement des clients Léa, en s'appuyant sur l'installeur EXE
v1.0.2 existant (per-user, upgrade-safe, mode /VERYSILENT /CONFIG=).
- Route dashboard `GET /api/fleet/installer` (web_dashboard/app.py, insertion pure,
125 lignes, 0 suppression) : sert un ZIP {EXE + install_silencieux.bat + enroll.txt
(SERVER_URL/token injectés via _resolve_public_server_url) + LISEZMOI} pour un poste
NEUF. L'EXE génère lui-même le machine_id → pas de pré-enregistrement (distinct de
la voie ZIP download_agent_package). Tri EXE en semver (1.0.10 > 1.0.2). Testée e2e.
- deploy/installer/silent/ : lanceur d'install silencieuse + gabarit enroll + notice.
- deploy/gpo/Deploy-LeaUpdate.ps1 : MAJ upgrade-safe via GPO **logon script user-context**
(install per-user invisible au contexte SYSTEM). Détection version = **DisplayVersion
du registre HKCU** (primaire pour install EXE ; le config.txt EXE ne porte PAS la
version — vérifié sur poste réel), fallback RPA_AGENT_VERSION (installs ZIP).
Comparaison semver, idempotent, journalisation best-effort silencieuse, non bloquant
à l'ouverture de session. Options -DryRun / -TargetVersionOverride / -LogShareOverride.
**Validé sur poste réel .11 (Windows PowerShell 5.1)** : branche « déjà à jour » et
branche « MAJ requise » (DryRun, 0 install), détection = 1.0.2.
- docs/PROCEDURE_DEPLOIEMENT_LEA_JULIEN.md : procédure (poste neuf / MAJ manuelle / GPO / rollback).
- EXE binaire jamais versionné (deploy/installer/releases/.gitignore).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
76 lines
4.3 KiB
Markdown
76 lines
4.3 KiB
Markdown
# Procédure de déploiement Léa — pour Julien (informaticien clinique)
|
|
|
|
> Version agent cible : **1.0.2** · Installeur : `Lea-Setup-v1.0.2.exe` (per-user, aucun droit admin requis).
|
|
> Rédigé le 2026-07-06. Poste pilote validé : **Émilie**.
|
|
|
|
Trois cas. Le n°1 pour un poste **neuf**, le n°2/3 pour **mettre à jour** un poste déjà installé.
|
|
|
|
---
|
|
|
|
## 1. Installer Léa sur un NOUVEAU poste (install silencieuse)
|
|
|
|
1. Depuis un navigateur (dashboard Léa), télécharger le paquet :
|
|
**`GET /api/fleet/installer`** → `Lea-Install-Silencieux-vX.Y.Z.zip`.
|
|
*(Le ZIP contient l'EXE + `install_silencieux.bat` + `enroll.txt` déjà pré-rempli avec l'URL serveur et le token.)*
|
|
2. Sur le poste cible : dézipper le paquet dans un dossier.
|
|
3. Ouvrir **`enroll.txt`** (Bloc-notes), compléter **`USER_NAME`** et **`USER_EMAIL`** (l'URL et le token sont déjà remplis). Enregistrer.
|
|
4. Double-cliquer **`install_silencieux.bat`**. Attendre le message **« Installation terminée - OK »**.
|
|
5. Vérifier : icône Léa près de l'horloge (barre des tâches).
|
|
|
|
> L'installeur génère un **`machine_id` unique** pour ce poste : rien à pré-enregistrer.
|
|
|
|
---
|
|
|
|
## 2. Mettre à jour un poste déjà installé — voie MANUELLE (immédiate)
|
|
|
|
C'est la voie utilisée pour Émilie, à rejouer poste par poste **en attendant l'autorisation AD/GPO**.
|
|
|
|
1. Récupérer **`Lea-Setup-v1.0.2.exe`** (le même EXE, aucune régénération).
|
|
2. Sur le poste, le lancer par **double-clic** (mode interactif).
|
|
3. Le wizard doit s'afficher **pré-rempli** avec la config du poste (serveur/token/utilisateur).
|
|
⚠️ **S'il est vide** → l'installeur n'a pas détecté l'install existante : **ne pas continuer**, prévenir AIVANOV (risque de créer un nouveau poste au lieu de mettre à jour).
|
|
4. Valider. L'installeur **arrête Léa**, sauvegarde l'ancienne version (`<dossier>_backup`), met à jour en **préservant l'identité** du poste, purge les captures accumulées.
|
|
5. Vérifier après MAJ (mêmes points qu'Émilie) : Léa relancée en **v1.0.2**, icône présente, capture d'écran OK, comportement RDP OK.
|
|
|
|
> **Rollback** si besoin : restaurer le dossier `<install>_backup` (le dossier d'install est `%LOCALAPPDATA%\Programs\Lea`).
|
|
|
|
---
|
|
|
|
## 3. Mettre à jour la flotte via AD/GPO (quand l'autorisation est en place)
|
|
|
|
Script fourni : **`deploy/gpo/Deploy-LeaUpdate.ps1`**.
|
|
|
|
### ⚠️ Point crucial : script d'OUVERTURE DE SESSION (contexte utilisateur)
|
|
Léa est installée **par utilisateur** (`%LOCALAPPDATA%`). Un script de **démarrage machine** (contexte SYSTEM) **ne verrait pas** l'installation et ne mettrait rien à jour. Le script doit donc être en :
|
|
**`User Configuration → Policies → Windows Settings → Scripts (Logon/Logoff) → Logon`.**
|
|
|
|
### Étapes
|
|
1. Déposer `Lea-Setup-v1.0.2.exe` sur un partage du domaine accessible aux postes (ex. `\\SRV-FICHIERS\Deploiement$\Lea\`).
|
|
2. Éditer les **3 lignes de paramètres** en tête de `Deploy-LeaUpdate.ps1` :
|
|
- `$ExeSource` = chemin UNC (ou URL) de l'EXE ;
|
|
- `$TargetVersion` = `1.0.2` (doit correspondre à l'EXE) ;
|
|
- `$LogShare` = dossier partagé pour les journaux d'audit (ou vide → journal local).
|
|
3. Ajouter le script en **Logon script** (commande : `powershell.exe -NoProfile -ExecutionPolicy Bypass -File Deploy-LeaUpdate.ps1`).
|
|
4. À l'ouverture de session, le script : détecte la version installée, compare à la cible, met à jour **seulement si plus ancienne** (idempotent, silencieux, upgrade-safe), puis journalise.
|
|
|
|
### Comportement (garanti par le script)
|
|
- Poste **déjà à jour** → ne fait rien.
|
|
- Poste **sans Léa** → ignoré (les postes neufs passent par le cas 1).
|
|
- Erreur (partage indisponible, etc.) → journalisée, **n'empêche jamais l'ouverture de session**.
|
|
|
|
### Audit
|
|
Un journal par poste/utilisateur dans `$LogShare` : `<POSTE>_<UTILISATEUR>.log` (ligne datée : version installée → version après MAJ, ou motif d'échec).
|
|
|
|
---
|
|
|
|
## Aide-mémoire
|
|
|
|
| Besoin | Voie | Artefact |
|
|
|---|---|---|
|
|
| Poste neuf | Install silencieuse | Dashboard `GET /api/fleet/installer` |
|
|
| MAJ immédiate d'un poste | Manuelle (double-clic) | `Lea-Setup-v1.0.2.exe` |
|
|
| MAJ de toute la flotte | AD/GPO (logon script) | `deploy/gpo/Deploy-LeaUpdate.ps1` |
|
|
| Revenir en arrière | Rollback | dossier `<install>_backup` |
|
|
|
|
En cas de doute ou de wizard **non** pré-rempli lors d'une MAJ : **s'arrêter et contacter AIVANOV**.
|