2 votes

Recherche d'entrées données dans le registre à l'aide de NSIS

En gros, le NSIS de mon application définit une valeur de registre appelée "path" dans une clé appelée SOFTWARE\APPLICATION_NAME VERSION_NUMBER qui indique l'endroit où l'application est actuellement installée. J'essaie maintenant d'introduire une fonctionnalité permettant de vérifier si une ou plusieurs versions précédentes de l'application sont installées et, le cas échéant, de proposer d'utiliser les paramètres précédents. Si plusieurs versions sont installées, l'utilisateur pourra choisir la version dont il veut tirer les paramètres. Le problème que je rencontre est de rechercher dans le registre les versions précédemment installées. Comme j'inclus le VERSION_NUMBER, la clé dans laquelle le chemin d'accès peut être trouvé change pour chaque version et il n'y a donc pas de requête de recherche "gravée dans le marbre".

Donc, par exemple, si j'avais utilisé dès le départ SOFTWARE\APPLICATION_NAME sans la version comme emplacement pour définir les informations de chemin, ce serait facile car je pourrais simplement vérifier si cette valeur de registre existe. Une solution idéale serait de pouvoir effectuer une recherche avec des jokers et de récupérer tous les chemins qui correspondent (par ex. SOFTWARE\APPLICATION_NAME* ). Je pourrais effectivement arrêter d'insérer le "VERSION_NUMBER" à partir de maintenant, mais cela ne permettrait pas aux utilisateurs de conserver leur configuration actuelle sur la prochaine version, mais plutôt sur la version suivante (et ce, s'ils mettent à jour à partir de la version la plus récente en premier lieu).

J'espère que ma question est claire. Veuillez me faire savoir si je peux clarifier quoi que ce soit.

2voto

Anders Points 34448

Utilisez EnumRegKey et quelques manipulations/comparaisons basiques de chaînes de caractères...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X