diff --git a/Makefile b/Makefile index 33f8bf2..646baff 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ PI_OPTS := \ --hidden-import cryptography.hazmat.primitives.asymmetric.x25519 \ --collect-submodules PyQt6 -.PHONY: all linux windows helper installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv +.PHONY: all linux windows helper windows-release check-windows-release installer-deps release publish version changelog install install-gnome uninstall-gnome run run-admin icon reset-password setup-sudoers check-privileges clean clean-all help venv # ── Cible par défaut ──────────────────────────────────────────────────────── all: linux @@ -187,6 +187,48 @@ release: linux @mv $(DIST)/$(APP) $(DIST)/$(APP)-$(VERSION)-linux-x86_64 @echo " 📦 Release → $(DIST)/$(APP)-$(VERSION)-linux-x86_64" +# ── Chaîne Windows complète ─────────────────────────────────────────────────── +# Compile l'exe, le service, construit l'installeur, puis renomme le tout avec +# la version — dans cet ordre : wgsecure.iss source `dist\wgsecure.exe` et +# `dist\wgsecure-helper.exe` sous leurs noms bruts, renommer avant de compiler +# l'installeur le ferait échouer (ou, pire, embarquer les binaires de la +# version précédente). +# +# La version vit à deux endroits — ce fichier et wgsecure.iss — et rien ne les +# synchronise : la garde ci-dessous refuse de produire un installeur dont le +# numéro contredirait celui de la release. +# Sortie d'ISCC journalisée plutôt qu'affichée : Wine y mêle ses propres +# avertissements (wow64), sans intérêt quand tout se passe bien. En cas +# d'échec le journal est recraché, sinon la raison serait perdue. +ISCC_LOG := /tmp/wgsecure-iscc.log +ISCC := $(HOME)/.wine/drive_c/Program Files (x86)/Inno Setup 6/ISCC.exe +ISS_VERSION = $(shell sed -n 's/^#define MyAppVersion "\(.*\)"/\1/p' wgsecure.iss) + +# Vérifications d'abord, compilations ensuite : placées dans la recette de +# windows-release, elles n'auraient averti qu'après plusieurs minutes de +# PyInstaller, pour un défaut connu dès la première seconde. +check-windows-release: + @test "$(ISS_VERSION)" = "$(VERSION)" \ + || (echo " ❌ Version incohérente : Makefile $(VERSION), wgsecure.iss $(ISS_VERSION)"; \ + echo " → Alignez #define MyAppVersion dans wgsecure.iss"; exit 1) + @test -f "$(ISCC)" \ + || (echo " ❌ Inno Setup introuvable ($(ISCC))"; \ + echo " → Installez Inno Setup 6 dans Wine."; exit 1) + +windows-release: check-windows-release installer-deps windows helper + @echo "" + @echo " 📦 Construction de l'installeur Windows…" + @wine "$(ISCC)" wgsecure.iss > $(ISCC_LOG) 2>&1 \ + || (echo " ❌ Échec de la compilation Inno Setup :"; \ + tail -20 $(ISCC_LOG); exit 1) + @mv $(DIST)/$(APP).exe $(DIST)/$(APP)-$(VERSION)-windows-x86_64.exe + @mv $(DIST)/$(APP)-helper.exe $(DIST)/$(APP)-helper-$(VERSION).exe + @echo "" + @echo " ✅ Windows → $(DIST)/$(APP)-$(VERSION)-windows-x86_64.exe" + @echo " ✅ Service → $(DIST)/$(APP)-helper-$(VERSION).exe" + @echo " ✅ Setup → $(DIST)/$(APP)-$(VERSION)-setup.exe" + @echo "" + # ── Publication de la release sur Gitea ─────────────────────────────────────── # Rebuild l'artefact Linux (fraîcheur garantie avec VERSION), joint aussi les # artefacts Windows présents dans dist/ s'ils ont déjà été produits pour cette @@ -351,6 +393,7 @@ help: @echo " ║ make helper Service Windows (Wine) ║" @echo " ║ make installer-deps Prérequis wgsecure.iss ║" @echo " ║ make release Linux + nommage release ║" + @echo " ║ make windows-release Windows + exe + setup ║" @echo " ║ make publish Tague + publie sur Gitea ║" @echo " ║ make version Affiche la version ║" @echo " ║ make changelog Dernière entrée changelog║"