uninstallkey est une liste de clés de désintallation qui permete à WAPT de trouver dans la base de registre les commandes système à lancer pour désinstaller les logiciels du paquet. Cela intervient uniquement à la désinstallation du paquet par la commande wapt-get remove.
Cela n'est pas utilisé quand un paquet d'une version supérieure écrase un paquet d'une version inférieure. On considère que l'installeur standard du logiciel gère lui-même sa mise à jour. Si ce n'est pas le cas, alors il faut prévoir explicitement dans la procédure install() la désinstallation. Une manière faire est d'utiliser la fonction "installed_softwares()" du module setuphelpers qui renvoie une liste des clés de registre qui correspondent à une chaine à rechercher : par exemple pour java :
setuphelpers.installed_softwares('java')
[{'install_date': u'20130409', 'install_location': u'C:\Program Files (x86)\Java\jre7\', 'key': u'{26A24AE4-039D-4CA4-87B4-2F83217017FF}', 'name': u'Java 7 Update 17', 'publisher': u'Oracle', 'uninstall_string': u'MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83217017FF}', 'version': u'7.0.170'}, {'install_date': u'20130409', 'install_location': u'C:\Program Files (x86)\Java\jdk1.7.0_17\', 'key': u'{32A3A4F4-B792-11D6-A78A-00B0D0170170}', 'name': u'Java SE Development Kit 7 Update 17', 'publisher': u'Oracle', 'uninstall_string': u'MsiExec.exe /I{32A3A4F4-B792-11D6-A78A-00B0D0170170}', 'version': u'1.7.0.170'}, {'install_date': u'20130304', 'install_location': u'', 'key': u'{4A03706F-666A-4037-7777-5F2748764D10}', 'name': u'Java Auto Updater', 'publisher': u'Sun Microsystems, Inc.', 'uninstall_string': '', 'version': u'2.1.9.0'}]
La fonction renvoie une liste de "dictionnaires" correspondant à chaque logiciel trouvé pour chaque logiciel, on a sa date d'install, sa clé, son nom (name), sa version et la chaine de desinstallation (uninstall_string) telle que renseignée par l'éditeur. {'install_date': u'20130409', 'install_location': u'C:\Program Files (x86)\Java\jre7\', 'key': u'{26A24AE4-039D-4CA4-87B4-2F83217017FF}', 'name': u'Java 7 Update 17', 'publisher': u'Oracle', 'uninstall_string': u'MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F83217017FF}', 'version': u'7.0.170'}
Un exemple pour désinstaller les version 3.6 de LibreOffice et d'Openoffice avant d'installer la version 4.: def install(): # liste des logiciels nommés libreoffice 3. old_libreoff = installed_softwares('libreoffice 3.')
# liste des logiciels nommés openoffice old_openoff = installed_softwares('openoffice')
# on fait une liste globale old_office = old_libreoff + old_openoff
# si cette liste globale n'est pas vide, on desinstalle explicitement chaque logiciel if old_office: # boucle pour chaque logiciel trouvé for uninstall in old_office: # on regarde si la version commence par 3. if uninstall['version'].startswith('3.'): # on recupere la commande de desinstallation correspondant à la clé du logiciel cmd = WAPT.uninstall_cmd(uninstall['key']) print(u'uninstalling %s' % (uninstall['name'],)) # on execute la commande de desinstallation run(cmd)
les commandes run() et installed_softwares() sont disponibles dans le module setuphelpers La variable WAPT automatiquement disponible dans setup.py permet d'accéder à toutes les fonctions de wapt-get (install, remove, upgrade, download, inventory, uninstall_cmd, read_param, write_param, update,...)... à documenter.
Hubert Touvet
Le 29/05/2013 10:04, LECLERCQ Johann a écrit :
Bonjour à tous,
M'essayant à la création de mes paquets après création de mon certificat, le rôle de certains paramètres me semblent confus.
Exemple "uninstallkey" : je teste sur JAVA "jre-7u21-windows-i586.exe"
La première fois que l'on installe un paquet, on ne peut récupérer la clé d'installation de cette version de JAVA. Si j'ai bien compris, on la récupère par la requête "wapt-get list-registry java" :
{26A24AE4-039D-4CA4-87B4-2F83217021FF} Java 7 Update 21 {4A03706F-666A-4037-7777-5F2748764D10} Java Auto Updater
Mes interrogations tournent autour de la question désinstallation des versions préalablement installées sur les postes quelque soit les versions mais aussi désinstallation propre de la version précédente installée par WAPT.
Comment procéder dans le fichier setup.py ? MERCI