[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