[Wapt] install_msi_if_needed et mauvaise détection de la uninstallKey

Daniel Berteaud daniel at firewall-services.com
Thu Dec 6 11:35:53 CET 2018


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


-- 

Logo FWS

	*Daniel Berteaud*

FIREWALL-SERVICES SAS.
Société de Services en Logiciels Libres
Tel : 05 56 64 15 32
Matrix: @dani:fws.fr
/www.firewall-services.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.tranquil.it/pipermail/wapt/attachments/20181206/5c6da024/attachment.html>


More information about the WAPT mailing list