4.2 KiB
Migration NSIS 2.x → 3.x — QElectroTech
Fichiers modifiés
| Fichier | Changement |
|---|---|
QET64.nsi |
Migration complète (voir détails ci-dessous) |
lang_extra_fr.nsh |
Réencodé ISO-8859-1 → UTF-8 |
lang_extra.nsh |
Inchangé (déjà UTF-8) |
Détail des changements dans QET64.nsi
1. SetCompressor déplacé en tête de fichier
NSIS 3 exige que SetCompressor apparaisse avant toute Section ou Function.
Avant il était après les !include et !define — cela fonctionnait en NSIS 2 mais
génère un avertissement/erreur en NSIS 3.
; ✅ NSIS 3 — en tout premier
SetCompressor /FINAL /SOLID lzma
2. XPStyle on supprimé → remplacé par ManifestSupportedOS
XPStyle on est retiré en NSIS 3. Il était utilisé pour activer les styles visuels
Windows XP/Vista. NSIS 3 gère cela via le manifeste de l'exécutable :
; ✅ NSIS 3
ManifestSupportedOS all
ManifestDPIAware true
3. Var /GLOBAL déclarées au niveau global
En NSIS 2, des Var /GLOBAL à l'intérieur d'une Section compilaient sans erreur.
En NSIS 3, les variables doivent être déclarées au niveau du script (avant toute section).
; ✅ NSIS 3 — déclaration globale
Var final_qet_exe
Var final_project_ico
Var final_element_ico
Var final_titleblock_ico
4. SetRegView 64 ajouté dans .onInit, section cachée, et un.onInit
En NSIS 3, sur un système 64 bits, la redirection de registre WOW6432Node est active
par défaut. Sans SetRegView 64, les clés HKLM atterrissent dans
HKLM\SOFTWARE\Wow6432Node\ au lieu de HKLM\SOFTWARE\.
Ajouté à trois endroits :
Function .onInit→ pour lire la clé d'installation existante- Section cachée (registry/shortcuts) → avant les
WriteRegStr Section "Uninstall"→ pour supprimer les bonnes clésFunction un.onInit→ cohérence avec l'installation
5. Icônes MUI mises à jour
Les icônes XPUI-install.ico / XPUI-uninstall.ico sont remplacées par les nouvelles
icônes NSIS 3 :
; ✅ NSIS 3
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
Les anciennes icônes XPUI sont encore présentes pour compatibilité ascendante, mais les nouvelles sont recommandées.
6. ${IfNot} ${RunningX64} — syntaxe clarifiée
Remplacement du bloc ${If}/${Else}/${EndIf} moins lisible par ${IfNot} plus concis :
; ✅ NSIS 3 — idiome recommandé
${IfNot} ${RunningX64}
MessageBox MB_OK|MB_ICONSTOP $(wrongArch)
Abort
${EndIf}
7. URLs HTTP → HTTPS
Les URLs http://qelectrotech.org/ ont été mises à jour en https://qelectrotech.org/
(cosmétique, sans impact sur la compilation).
8. lang_extra_fr.nsh — Réencodage ISO-8859-1 → UTF-8
NSIS 3 est Unicode natif : tous les fichiers .nsh doivent être encodés en UTF-8
(avec ou sans BOM). Le fichier lang_extra_fr.nsh était en ISO-8859-1 — il a été
converti en UTF-8.
Commande utilisée :
iconv -f ISO-8859-1 -t UTF-8 lang_extra_fr.nsh
Ce qui N'A PAS changé (déjà compatible NSIS 3)
!include "MUI2.nsh"— inchangé ✅!define MUI_LANGDLL_ALLLANGUAGES— toujours supporté ✅!insertmacro MUI_RESERVEFILE_LANGDLL— inchangé ✅FileFunc.nsh/ macroLocate— inchangé ✅RequestExecutionLevel admin— inchangé ✅InstallDir "$PROGRAMFILES64\..."— inchangé ✅- Structure Sections / SubSections — inchangée ✅
!insertmacro MUI_FUNCTION_DESCRIPTION_*— inchangé ✅- Toutes les
LangString— inchangées ✅ Dutch_BelgiumviaContrib/— inchangé ✅
Checklist avant compilation avec NSIS 3
- NSIS 3.x installé (https://nsis.sourceforge.io/)
- Tous les plugins utilisés sont la version Unicode/NSIS3
FileFunc.nsh: fourni avec NSIS 3 ✅x64.nsh: fourni avec NSIS 3 ✅MUI2.nsh: fourni avec NSIS 3 ✅
lang_extra.nshetlang_extra_fr.nshencodés en UTF-8- Le fichier
Contrib/Dutch_Belgium.nlf/.nshest placé dans%NSIS%\Contrib\Language files\ou référencé via un chemin relatif