* feat(installer): ajouter la hiérarchie d'exceptions InstallerError
Ajoute les exceptions pour les opérations d'installer packaging:
- InstallerError (base)
- InstallerTypeError
- IsccNotFoundError
- InstallerBuildError
- InstallerConfigError
Suit le pattern existant de ReleaseError avec tests unitaires complets.
* feat(installer): ajouter le Port InstallerPort
- Ajouter la Protocol InstallerPort dans types.py, après ReleaserPort
- Protocol runtime_checkable définit deux méthodes:
* build(bundle_dir, app_name, version, output_dir) → Path
* get_installer_name() → str
- Ajouter InstallerPort à __all__
- Tests: test_installer_port.py valide la conformité structurelle
* feat(installer): ajouter BaseInstaller
* feat(installer): ajouter le template setup.iss par défaut
* fix(installer): aligner __init__.py sur 0 octet comme updater/__init__.py
* feat(installer): ajouter l'adapter InnoSetupInstaller
Détecte ISCC.exe (PATH puis emplacements par défaut), rend le script
.iss via substitution #PLACEHOLDER# et compile en shellant vers
ISCC.exe. Gère les erreurs de config, de détection et de build.
* fix(installer): verifier l'existence du setup.exe genere par ISCC.exe
ISCC.exe pouvait retourner un code 0 sans que le setup.exe attendu
n'existe reellement (ex: iss_path personnalise avec un
OutputBaseFilename different), renvoyant alors un chemin invalide
sans erreur.
* feat(installer): ajouter InstallerFactory
* feat(installer): ajouter InstallerService
Service orchestrant la création de setup.exe via InstallerFactory.
Miroir de ReleaseService : délégation simple au factory.
* feat(installer): ajouter les champs de config installer_enabled/output_dir/iss_path
Ajoute installer_enabled, installer_output_dir et installer_iss_path à
CompilerConfig, en miroir du groupe release (tuf_*) : coercion str->Path,
validation d'existence de installer_iss_path, support to_dict()/from_dict()
via un groupe "installer".
* feat(installer): ajouter PipelineService.build_installer et le stage installer
* feat(installer): integrer le stage installer dans run_pipeline
Ajoute skip_installer a run_pipeline pour construire le setup.exe
Inno Setup entre les stages zip et release quand installer_enabled
est actif. InstallerError est propagee comme les autres erreurs de
pipeline.
Corrige egalement le wiring de compiler_service_factory de EzCompiler
vers PipelineService, jamais transmis jusqu'ici.
* feat(installer): ajouter le flag CLI --installer-enabled
* fix(installer): corriger la generation ISCC et l'assemblage du release
- Echapper correctement AppId dans le template .iss (ISPP consomme les
accolades de {#MyAppName}, il en fallait trois pour en laisser deux
litterales apres expansion)
- Resoudre BUNDLE_DIR/OUTPUT_DIR en chemins absolus, ISCC les
resolvant relativement au .iss et non au cwd du process
- Copier le setup.exe dans dist/release/ lors de l'assemblage, sinon
l'installeur n'etait jamais uploade
* docs(installer): documenter le stage installer et completer release/CLI
- Nouveau guide guides/windows-installer.md (prerequis ISCC.exe,
activation, iss custom, skip_installer, erreurs)
- Pipeline order et upload layout mis a jour (compile -> zip ->
installer -> release)
- API reference : BaseInstaller/InnoSetupInstaller/InstallerFactory,
InstallerService, exceptions installer
- Gaps preexistants combles au passage : BaseReleaser/TufupReleaser/
ReleaserFactory, ReleaseService, exceptions release, commandes CLI
compile/upload/release init
* chore(release): bump version to 3.1.0