Bonjour.
Je débute dans la création de paquets WAPT, et pour l'instant, ça se passe plutôt bien (si ce n'est le douloureux apprentissage de Python, je suis plutôt perl moi ^^)
Je rencontre par contre un problème de détection de la uninstallKey avec la fonction install_msi_if_needed.
Je crée un paquet pour iTunes, dont j'extrais les MSI, et je n'installe que les composants qui m'intéressent
Pour les deux dépendances (Application Support et Mobile Device Support), aucun pb, ma fonction install() est triviale, et tout fonctionne, eg
|
1. def install(): 2. print('Installing Apple Mobile Device Support') 3. if iswin64(): 4. install_msi_if_needed("AppleMobileDeviceSupport64.msi") 5. else: 6. install_msi_if_needed("AppleMobileDeviceSupport.msi") |
Mais pour iTunes lui même, ça ne marche pas aussi bien. Le problème, c'est que la fonction install_msi_if_needed détecte la uninstallKey {A9921EE9-86E5-402C-A934-4A8DBAD99E24} alors que une fois installé, iTunes est visible dans le registre sous la clé {5881B877-CB42-4317-9411-96BA3CA39715}. L'installation échoue donc avec l'erreur
2018-12-06 11:04:56,388 CRITICAL Fatal error in install script: EWaptSetupException: Fatal error : MSI iTunes64.msi has been installed but the uninstall key {A9921EE9-86E5-402C-A934-4A8DBAD99E24} can not be found: Traceback (most recent call last): File "C:\Program Files (x86)\wapt\common.py", line 3512, in install_wapt exitstatus = setup.install() File "C:\waptdev\wapt-itunes\setup.py", line 11, in install install_msi_if_needed('iTunes64.msi' if iswin64() else 'iTunes.msi',properties=props) File "C:\Program Files (x86)\wapt\common.py", line 3471, in new_func return func(*args,**kwargs) File "C:\Program Files (x86)\wapt\setuphelpers.py", line 3915, in install_msi_if_needed error('MSI %s has been installed but the uninstall key %s can not be found' % (msi,key)) File "C:\Program Files (x86)\wapt\setuphelpers.py", line 4305, in error raise EWaptSetupException(u'Fatal error : %s' % reason) EWaptSetupException: Fatal error : MSI iTunes64.msi has been installed but the uninstall key {A9921EE9-86E5-402C-A934-4A8DBAD99E24} can not be found
FATAL ERROR : EWaptSetupException: Fatal error : MSI iTunes64.msi has been installed but the uninstall key {A9921EE9-86E5-402C-A934-4A8DBAD99E24} can not be found Exit code: 3
Comment gérer ce genre de cas ?
Jusqu'à présent, j'utilisais WPKG, qui permet de rechercher dans le registre une entrée Uninstall à partir de la valeur de DisplayName, je pouvais donc rechercher "iTunes" et comparer sa version sans me soucier du nom de la clé elle même (qui peut changer d'une version à l'autre, je ne sais pas si c'est le cas pour iTunes). Est-ce qu'il existe un mécanisme similaire avec WAPT ?
Cordialement,
Daniel