Bonjour,
Pour les addons différentiés 32 ou 64 bits, c'est uniquement les paramètres du script iss qui sont renseignés :
- Pour 32 bit :
AppId={{wampserver32}
DefaultDirName=c:\wamp
- Pour 64 bit
AppId={{wampserver64}
DefaultDirName=c:\wamp64
- Puis, commun pour 32 ou 64 bit
UsePreviousAppDir=yes
AppendDefaultDirName=no
DirExistsWarning=no
Pour les installeurs communs 32 et 64 bits comme PhpMyAdmin, Adminer, etc., c'est du code qui va vérifier si une seule ou les deux versions 32 et 64 bit sont installées et où :
;--- N'existe pas
AppId={{wampserver32-64}
DefaultDirName={code:MyDirInstall}
UsePreviousAppDir=yes
AppendDefaultDirName=no
DirExistsWarning=no
Si une seule version installée, c'est “transparent”, demande d'installation dans le chemin de la version trouvée.
Si les deux versions sont trouvées (Donc forcément sous Windows 64bit), dialogue MsgBox pour demander sur quelle version on veut installer ; il faudra relancer l'installeur pour installer sur l'autre version.
C'est géré dans le script iss par
;--- Include custom message box + Dir Install
;-- Texts of messages
#include "where_to_install_msg.iss"
;-- Code
#include "where_to_install.iss"
Et ce n'est pas AppSwitched, mais les clés Uninstall
En gros, selon que l'on est sous Windows 32bit ou Windows 64bit, je vais regarder des clés du registre
-- Si Windows 32 bit
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver32}_is1') then
-- Si Windows 64 bit
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver32}_is1') then
...
if RegKeyExists(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1') then
Et ensuite, dans la clé trouvée, je prends le chemin indiqué par InstallLocation dans la clé.
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver32}_is1', 'InstallLocation', Wamp32InstallDir) then
ou
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver32}_is1', 'InstallLocation', Wamp32InstallDir) then
ou
if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1', 'InstallLocation', Wamp64InstallDir) then