[Wapt] Désinstallation non silencieuse

Bastien HERMITTE bhermitte at b2pweb.com
Mon Apr 27 18:35:37 CEST 2015


Bonjour,

Juste un petit retour car j'ai trouvé pour supprimer la dll dans
system32 sur un windows 64bits :
with disable_file_system_redirection():
            remove_file(makepath(system32(),'cpwmon64.dll'))

Il faut également arrêter le service Spooler avant et le relancer après
car il utilise la dll.

Cordialement,

Bastien

Le 14/04/2015 15:36, Bastien HERMITTE a écrit :
> Bonjour,
>
> Merci pour printui je ne connaissait pas non plus !
>
> J'ai réussi à faire un truc pas mal avec celle-ci et à l'aide de regshot
> (d'ailleurs sur le repos tis il y a la version 2.7.3 alors que la
> dernière version du site http://sourceforge.net/projects/regshot/ est la
> 1.9.0, c'est normal ?).
>
> J'ai créé une fonction pour supprimer une clé de registre (en
> m'inspirant d'une existante) car je n'en ai pas trouvé dans le setuphelpers.
> Par contre, je n'arrive pas à supprimer la dll dans le dossier system32,
> il me dit qu'elle n'existe pas, j'imagine que c'est lié au 32/64bits, si
> vous avez une solution je suis preneur.
>
> Voici le setup.py :
>
> # -*- coding: utf-8 -*-
> from setuphelpers import *
> import _winreg
>
> uninstallkey = []
>
> def registry_delete_key(root, path, keyname):
>     """Delete the specified key from the specified registry path
>         root    : HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER ...
>         path    : string like "software\\microsoft\\windows\\currentversion"
>                            or
> "software\\wow6432node\\microsoft\\windows\\currentversion"
>         keyname : Name of the key to delete (must not have subkey)
>     the path can be either with backslash or slash
>     """
>     result = False
>     path = path.replace(u'/',u'\\')
>     try:
>         key = reg_openkey_noredir(root,path,sam=KEY_WRITE)
>         result = _winreg.DeleteKey(key,keyname)
>     except WindowsError as e:
>         logger.warning('registry_delete_key:%s'%ensure_unicode(e))
>     return result
>
> def install():
>     print('Installation de b2p-cutewriter')
>     run(r'converter\Setup.exe')
>     time.sleep(2)
>     run(r'"CuteWriter_v3.0.0.8.exe" /VERYSILENT /NO3D /SUPPRESSMSGBOXES
> /NORESTART')
>     time.sleep(2)
>
> def uninstall():
>     run('rundll32 printui.dll,PrintUIEntry /dl /n"CutePDF Writer"')
>     time.sleep(1)
>     run('rundll32 printui.dll,PrintUIEntry /dd /m"CutePDF Writer"')
>     time.sleep(1)
>
>     registry_delete_key(HKEY_LOCAL_MACHINE,
> 'SYSTEM\\CurrentControlSet\\Control\\Print\\Monitors', 'CutePDF Writer
> Monitor')
>     registry_delete_key(HKEY_LOCAL_MACHINE,
> 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall', 'CutePDF
> Writer Installation')
>     registry_delete_key(HKEY_LOCAL_MACHINE, 'SOFTWARE\\Acro Software
> Inc', 'CutePDF Writer')
>
>     if iswin64():
>         registry_delete_key(HKEY_LOCAL_MACHINE,
> 'SOFTWARE\\Wow6432Node\\Acro Software Inc', 'CutePDF Writer')
>         registry_delete_key(HKEY_LOCAL_MACHINE,
> 'SOFTWARE\\Wow6432Node\\GPL Ghostscript', '8.15')
>         registry_delete_key(HKEY_LOCAL_MACHINE, 'SOFTWARE\\Wow6432Node',
> 'GPL Ghostscript')
>         remove_file(makepath(system32(),'cpwmon64.dll'))
>     else:
>         registry_delete_key(HKEY_LOCAL_MACHINE, 'SOFTWARE\\GPL
> Ghostscript', '8.15')
>         registry_delete_key(HKEY_LOCAL_MACHINE, 'SOFTWARE', 'GPL
> Ghostscript')
>         remove_file(makepath(system32(),'cpwmon2k.dll'))
>
>     remove_tree(programfiles32 + r'\GPLGS')
>     remove_tree(programfiles32 + r'\Acro Software\CutePDF Writer')
>
> Cordialement,
>
> Bastien
>
> Le 13/04/2015 19:47, Denis Cardon a écrit :
>> Bonjour Bastien,
>>
>>> Bonjour et merci pour votre réponse.
>>>
>>> Je ne connaissais pas regshot, merci pour la découverte !
>>> Je ne vais pas tenter le diable si vous ne me conseillez pas de
>>> l'utiliser dans ce cas, mais je le garde sous le coude pour un prochain
>>> paquet.
>> en y jetant un petit coup d'oeil supplémentaire, on doit pouvoir faire
>> quelque chose d'à peu près propre en utilisant printui.dll ou
>> printui.exe pour nettoyer le spooler (ce qui est le truc le plus
>> délicat). Sur un winxp, ça donne:
>>
>> def uninstall():
>>     run('rundll32 printui.dll,PrintUIEntry /dl /n"CutePDF Writer"',
>> shell=True)
>>     run('rundll32 printui.dll,PrintUIEntry /dd /m"CutePDF Writer"',
>> shell=True)
>>     ...
>>
>> après il doit rester quelques entrées de base de registre et le
>> répertoire c:\program files\acro software à supprimer.
>>
>> cordialement,
>>
>> Denis
>>
>>> Après pas mal de tests/bidouilles avec AutoIt et PsExec je n'ai pas
>>> trouvé de solution miracle.
>>> Je me contente de tester l'utilisateur et de sortir avec le code
>>> d'erreur 1 si c'est l'utilisateur système qui est utilisé, ainsi je peux
>>> me rendre compte de mon erreur et aller désinstaller le paquet via la
>>> commande wapt-get.
>>>
>>> J'ai également prévu de faire un paquet pour PDFCreator, mais certains
>>> de mes utilisateurs ne jurent que par CutePDF...
>>>
>>> Bref, merci encore pour votre aide.
>>>
>>> Cordialement,
>>>
>>> Bastien
>>>
>>> Le 13/04/2015 13:48, Denis Cardon a écrit :
>>>> Bonjour Bastien,
>>>>
>>>>> J'essaye de faire un paquet pour le logiciel CutePDF Writer, mais
>>>>> celui-ci n'a pas de désinstallation silencieuse : deux msgbox de
>>>>> confirmation doivent être cliquées pour valider la désinstallation.
>>>>>
>>>>> J'ai réussi à contourner le problème avec un script AutoIt inspiré de
>>>>> celui-ci :
>>>>> http://computers.findincity.net/view/635399295212048058893586/cutepdf-writer-problems-with-silent-uninstall
>>>>>
>>>>>
>>>>> Cela fonctionne lorsque je désinstalle le programme en ligne de
>>>>> commande
>>>>> (wapt-get remove ...), mais cela bloque lorsque je le fais depuis la
>>>>> console.
>>>>>
>>>>> A priori le problème viendrait de l'utilisation du compte système qui
>>>>> n'a pas de bureau interactif.
>>>>>
>>>>> Ma question est la suivante : est-ce possible de forcer
>>>>> l'utilisation du
>>>>> compte administrateur même lors de l'installation via la console ?
>>>>> Sinon comment faire dans ce cas là ?
>>>> Au niveau de la configuration de l'exécution du waptservice, il est
>>>> exécuté en tant que "Local System" et n'a pas le droit d'interagir
>>>> avec le desktop. La notion de pouvoir interagir avec le bureau est
>>>> plus ou moins caduque avec les WinVista et ultérieur (ça pose plein de
>>>> soucis de sécurité et de reproductibilité) [1]. Vous pouvez essayer de
>>>> cocher la case pour voir si ça change le problème, mais je vous le
>>>> déconseille.
>>>>
>>>> Le compte Local System dispose bien d'un buffer graphique, sinon la
>>>> plupart des installeurs ne fonctionnerait pas du tout à travers le
>>>> waptservice car ils affichent souvent quelques fenêtres même si elle
>>>> servent à rien.
>>>>
>>>> Autoit doit avoir besoin d'un bureau interactif pour gérer ses clics
>>>> de souris ou ses frappes de clavier comme un utilisateur l'aurait
>>>> fait, et en fait ça pose problème avec la plupart des les outils de
>>>> déploiements[2]. Mais j'ai souvenir d'un adminsys qui utilisait du
>>>> autoit avec du fog snapin (avant de passer à wapt), donc on doit quand
>>>> même pouvoir faire des choses, mais je ne sais pas dans quelle mesure
>>>> c'est fiable à 100%.
>>>>
>>>> Une alternative pour la désinstallation est de supprimer tout les
>>>> fichiers et les clefs de registre qui ont été installé par le
>>>> programme dans une méthode "def uninstall():". Le logiciel regshot
>>>> (paquet tis-regshot) permet de tracer les fichier copié et les clefs
>>>> de registre créées lors de l'installation d'un logiciel. Toutefois
>>>> CutePDF créer une imprimante virtuelle et mets des clefs de registre
>>>> partout dans HKLM et doit interagir avec le spooler, donc je ne pense
>>>> pas que c'est une bonne idée d'adopter cette méthode non plus.
>>>>
>>>> Dans le [2], il est indiqué que si vous acheter la version payante,
>>>> vous pouvez supprimer la popup en question. Donc soit vous vous passer
>>>> de la désinstallation, soit vous payez, soit vous utiliser une autre
>>>> imprimante PDF (le paquet tis-pdfcreator s'installe et se désinstalle
>>>> proprement).
>>>>
>>>> Cordialement,
>>>>
>>>> Denis
>>>>
>>>> [1]
>>>> http://superuser.com/questions/415204/how-do-i-allow-interactive-services-in-windows-7
>>>>
>>>> [2]
>>>> http://superuser.com/questions/580555/cutepdf-writer-problems-with-silent-uninstall
>>>>
>>>>
>>>>> Merci d'avance.
>>>>>
>>>>> Bastien
>>>>>
>>>>> _______________________________________________
>>>>> WAPT mailing list
>>>>> WAPT at lists.tranquil.it
>>>>> http://lists.tranquil.it/listinfo/wapt
>>>>>
> _______________________________________________
> WAPT mailing list
> WAPT at lists.tranquil.it
> http://lists.tranquil.it/listinfo/wapt



More information about the WAPT mailing list