Bug rapporté : sur un poste client fraîchement installé sans Microsoft Edge WebView2 Runtime (typique sur Windows Server, Win10 sans MAJ récente, ou install corporate stripped down), la fenêtre du launcher restait toute blanche au démarrage. Les contrôles WebView2 (utilisés pour les onglets Reports et Documentation) tentent de s'initialiser au render de MainWindow, échouent en silence faute de runtime, et la fenêtre WPF reste vide visuellement. Fix : on bundle le bootstrapper WebView2 (MicrosoftEdgeWebview2Setup.exe, 1.6 MB, redistribuable Microsoft) dans le setup. À l'install, un check registre (3 emplacements : HKLM x64, HKLM x86, HKCU) détecte si le runtime est déjà présent. S'il manque, on lance le bootstrapper en silencieux qui télécharge ~150 MB depuis Microsoft et installe. Si le téléchargement échoue (poste offline, firewall corporate qui bloque go.microsoft.com), on ne fail PAS le setup global — le launcher sera installé sans WebView2, le user verra le bug visuel et pourra installer manuellement le runtime depuis Microsoft. Trade-off vs forcer l'install qui pourrait bloquer indéfiniment des admins en offline. Téléchargé depuis : https://go.microsoft.com/fwlink/p/?LinkId=2124703 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PS_Launcher — Installeur
Génère un setup Windows (PSLauncher-Setup-{version}.exe) qui distribue
le launcher principal + son updater dans Program Files\ASTERION VR\PSLauncher\.
Pré-requis
- .NET 8 SDK (déjà installé pour build le projet)
- Inno Setup 6.x — https://jrsoftware.org/isdl.php (gratuit, ~6 Mo)
Build en une commande
Depuis la racine du repo :
powershell -ExecutionPolicy Bypass -File installer\build-installer.ps1
Ça enchaîne :
dotnet publish src/PSLauncher.App -c Release→PSLauncher.exe(~77 Mo)dotnet publish src/PSLauncher.Updater -c Release→PSLauncher.Updater.exe(~10 Mo)ISCC PSLauncher.iss→installer/output/PSLauncher-Setup-X.Y.Z.exe
Le fichier final fait ~80 Mo (compression ultra Inno + binaires self-contained).
Distribution
Tu balances un seul .exe au client :
- Il lance, choisit français/anglais, clique Suivant×3, c'est installé.
- Raccourci bureau + menu Démarrer créés.
- Désinstallation propre via Programmes et fonctionnalités.
Le cache utilisateur (%LocalAppData%\PSLauncher\config.json, logs, downloads partiels)
n'est pas touché par l'install/désinstall — la license et les paramètres survivent.
Mise à jour du launcher
Le launcher se met à jour seul via PSLauncher.Updater.exe (cf. flow auto-update).
Le client n'a pas besoin de rejouer l'installeur sauf changement majeur (TFM, déps).
Bumper la version
Avant de rebuild un installeur :
src/PSLauncher.App/PSLauncher.App.csproj→<Version>X.Y.Z</Version>(et AssemblyVersion / FileVersion)installer/PSLauncher.iss→#define MyAppVersion "X.Y.Z"installer/build-installer.ps1
Côté serveur, mets aussi à jour manifest/versions.json section launcher avec la
nouvelle version + URL de download du nouveau PSLauncher.exe (via le backoffice
ou édition manuelle, puis php tools/sign-manifest.php).
Code-signing (optionnel)
Pour éviter le warning SmartScreen "éditeur inconnu", il faut signer
PSLauncher.exe, PSLauncher.Updater.exe et PSLauncher-Setup-X.Y.Z.exe avec
un certificat Authenticode (OV ~250 €/an, EV ~400 €/an, ou gratuit via SignPath
pour OSS). Hors-scope du script actuel.