.. module:: innoreg :mod:`innoreg` --- Inno Setup Registry ====================================== ``innoreg`` personnalise le registre de Windows. Dépendances ----------- * `Python `_ 3.6+ * `Inno Setup `_ 5u, 6 --- *choisi face à* `NSIS `_ *pour sa mise à l'échelle DPI* * ExecTI_ --- *facultatif, pour les autorisations maximales* .. _ExecTI: https://winaero.com/comment.php?comment.news.1843 Registre -------- ==================== ================================================================================================================ Clés Contenu ==================== ================================================================================================================ HKCR [1]_ → HKCU\\Software\\Classes + HKLM\\Software\\Classes HKCU `C:\\Users\\*\\ `_ NTUSER.DAT HKLM HKLM\\SYSTEM\\CurrentControlSet\\Control\\hivelist HKLM\\BCD00000000 B:\\Boot\\ BCD [2]_ HKLM\\SAM `C:\\Windows\\System32\\config\\ `_ SAM HKLM\\SECURITY `C:\\Windows\\System32\\config\\ `_ SECURITY HKLM\\SOFTWARE `C:\\Windows\\System32\\config\\ `_ SOFTWARE HKLM\\SYSTEM `C:\\Windows\\System32\\config\\ `_ SYSTEM HKU\\\\.DEFAULT [3]_ `C:\\Windows\\System32\\config\\ `_ DEFAULT HKU\\S-1-5-18 → HKU\\\\.DEFAULT HKU\\S-1-5-19 `C:\\Windows\\ServiceProfiles\\LocalService\\ `_ NTUSER.DAT HKU\\S-1-5-20 `C:\\Windows\\ServiceProfiles\\NetworkService\\ `_ NTUSER.DAT ==================== ================================================================================================================ .. [1] Écrire dans ``HKCU`` ou ``HKLM`` pour modifier ``HKCR``, ne laissez pas ``HKCR`` choisir pour vous .. [2] Pour nommer ``B:`` la partition de démarrage, clic droit sur "Ce PC" → Gérer → Gestion des disques .. [3] ``.DEFAULT`` est le ``HKCU`` du bureau de connexion et des comptes Système et Trusted Installer Utilisation ----------- .. literalinclude:: ../innoreg/help.txt :language: text .. raw:: html Compile **Exemple :** compiler 3 scripts en parallèle puis démarrer les exécutables créés:: pip install innoreg innoreg -s file1.ireg file2.iss file3.ireg L'expansion des 2 scripts ``*.ireg`` est séquentielle pour assurer la cohérence des messages d'erreur. La commande se termine quand tous les exécutables sont démarrés, mais n'attend pas la fin de ces exécutables. État de sortie : **0**: succès **1**: fichier manquant **2**: erreur de syntaxe La commande ``innoreg`` appelle la fonction ``innoreg()``:: from innoreg import * innoreg(('file1.ireg', 'file2.iss', 'file3.ireg'), 's') Inno Setup 6 est utilisé si les versions 5u et 6 sont installées. Les scripts ``*.ireg`` doivent être en UTF-8 mais pas nécessairement signés. Les scripts ``*.iss`` créés par ``innoreg`` sont en UTF-8 avec signature BOM car Inno Setup 5u et 6 supposent qu'un fichier non signé est codé en ANSI. Syntaxe ------- La syntaxe ``innoreg`` est plus brève que les fichiers ``*.reg``, la commande ``reg`` et les ``*-ItemProperty`` de PowerShell : .. raw:: html :file: ../innoreg/simple.html .. raw:: html simple.exe La première ligne contient les langues à inclure dans l'exécutable, la version 0.1 propose ``en`` et ``fr``. La valeur ``HideFileExt`` de type ``REG_DWORD`` vaut 0 si la case est cochée, 1 si décochée. ``DisableAutoplay`` vaut 1 si cochée, est supprimée si décochée. La valeur par défaut de la clé ``{...}`` vaut "PC" si cochée, est supprimée si décochée. Les valeurs sont de type ``REG_SZ`` entre guillemets simples, ``REG_EXPAND_SZ`` avec une ``%variable%``, ``REG_MULTI_SZ`` entre guillemets doubles, ``REG_BINARY`` entre points, ``REG_DWORD`` sans décorateur. Ajouter ``+`` en début de ligne crée la clé si cochée, supprime la clé si décochée. ``-`` supprime la clé si cochée, crée la clé si décochée. Ne pas se préoccuper de la clé ``WoW6432Node`` *(Windows on Windows 64 bit, 32 bit Node)*, ``innoreg`` écrit toutes les directives en 32 bits et 64 bits. Privilèges d'administrateur --------------------------- .. raw:: html :file: ../innoreg/admin.html .. raw:: html admin.exe Toute clé autre que ``HKCU`` active l'option ``-a`` qui provoque l'exécution en tant qu'administrateur. Ajouter ``!`` en fin de ligne marque l'exclusivité entre ``HKCU`` et ``HKLM``, la valeur est supprimée de ``HKCU`` si définie dans ``HKLM`` et inversement, utile pour la stratégie de groupe. Écrire ``-`` supprime la valeur, ``HibernateEnabled`` est supprimée si cochée, mais pas ``PagingFiles``. Si plusieurs langues sont incluses mais pas la langue du système final, une fenêtre propose à l'utilisateur de choisir parmi les langues incluses. Messages personnalisés ---------------------- .. raw:: html :file: ../innoreg/custom.html .. raw:: html custom.exe Personnaliser les messages si valeurs peu explicites ou ont un sens opposé à l'effet désiré : ``HideFileExt`` devient *"Afficher les extensions des fichiers"*. Écrire les messages dans l'ordre de déclaration des langues. Si un message manque, le message de la première langue s'affiche, commencer par l'anglais si possible. Si un élément n'a qu'un message, il est codé en dur comme Description et ne surcharge pas la section ``CustomMessages``. Long exemple ------------ .. raw:: html long.exe L'assistant classique Inno Setup 5 a une taille fixe. L'assistant moderne Inno Setup 6 peut s'agrandir jusqu'à 50%, ``innoreg`` fixe la taille en fonction des cases à cocher. `Code source <../innoreg/long.ireg>`_ utilisable avec les privilèges d'administrateur, mais d'autres clés du registre nécessitent des autorisations plus élevées. Autorisations maximales ----------------------- .. raw:: html :file: ../innoreg/trusted.html .. raw:: html trusted.exe ``innoreg`` ne gère pas les autorisations plus élevées qu'administrateur. Vous pouvez démarrer votre exécutable en tant que Trusted Installer avec ExecTI_ pour avoir les autorisations maximales sur ``HKLM`` mais ``HKCU`` sera le compte Trusted Installer, ce compte n'ayant pas de profil, ``HKCU`` sera ``HKU\.DEFAULT``. Vous ne pouvez pas créer un assistant modifiant à la fois ``HKLM`` avec les autorisations maximales et ``HKCU`` pour l'utilisateur courant. Versions -------- :0.4: 16 février 2019 --- *Première version bêta, Inno Setup 6* :0.3: 8 février 2019 --- ``import *`` *importe seulement innoreg()* :0.2: 29 janvier 2019 --- *Empaquetage avec* ``setuptools`` et métadonnées :0.1: 28 janvier 2019 --- *Première version alpha*