[Wapt] clé uninstallkey

Hubert TOUVET htouvet at tranquil.it
Wed May 29 11:24:41 CEST 2013


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



More information about the Wapt mailing list