Files
qelectrotech-source-mirror/build-aux/windows/MIGRATION_NOTES.md
Laurent Trinques d1e10afd61
Some checks failed
Auto-build doxygen docs / doxygen (push) Failing after 2m34s
Auto-build doxygen docs / deploy (push) Has been skipped
Add notes.md
2026-04-24 13:05:27 +02:00

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és
  • Function 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 / macro Locate — inchangé
  • RequestExecutionLevel admin — inchangé
  • InstallDir "$PROGRAMFILES64\..." — inchangé
  • Structure Sections / SubSections — inchangée
  • !insertmacro MUI_FUNCTION_DESCRIPTION_* — inchangé
  • Toutes les LangString — inchangées
  • Dutch_Belgium via Contrib/ — 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.nsh et lang_extra_fr.nsh encodés en UTF-8
  • Le fichier Contrib/Dutch_Belgium.nlf / .nsh est placé dans %NSIS%\Contrib\Language files\ ou référencé via un chemin relatif