Page 1 sur 1

[RESOLU] Fonction uninstall() non exécutée par WAPT ?

Publié : 01 avr. 2026 - 17:13
par erems
Bonjour,

nous travaillons actuellement sur un paquet DinoCapture dont voici le setup.py :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

r"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()

"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls

uninstallkey = r'{683A259B-BCA2-4161-9B23-2110F2AE472C}'
iss_path = r"C:\Program Files\DinoCapture-2.0-Uninstall"

def install():
    copytree2('DNC2_AP',iss_path)
    # Installing the software
    print("Installing: DinoCapture 2.0")
    install_exe_if_needed(rf'{iss_path}\setup.exe',
        silentflags='/s',
        key=uninstallkey,
        min_version='1.5.57.A'
    )

def uninstall():
    # Declaring local variables
    setupfile = rf'{iss_path}\setup.exe'
    uninst_file = rf'{iss_path}\uninstall.iss'
    if isfile(uninst_file):
        print("Lancement de la désinstallation DinoCapture")
        uninstallcmd = rf'"{setupfile}" /s /f1"{uninst_file}"'
        print(uninstallcmd)
        run(
            uninstallcmd,
            accept_returncodes=[0,1605,1614,1641,3010,2147753984]
        )
        remove_tree(iss_path)
    else:
        print("Fichier non trouvé : ", uninst_file)
Depuis PyScripter, les fonctions d'installation et de désinstallation fonctionnent bien. La désinstallation produit la sortie attendue :

Code : Tout sélectionner

Ligne de Commande : uninstall "C:\Users\user-adm\Desktop\erems-dinocapture_1.5.57_Windows_PROD-wapt\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Uninstalling C:\Users\user-adm\Desktop\erems-dinocapture_1.5.57_Windows_PROD-wapt ...
Lancement de la désinstallation DinoCapture
"C:\Program Files\DinoCapture-2.0-Uninstall\setup.exe" /s /f1"C:\Program Files\DinoCapture-2.0-Uninstall\uninstall.iss"
2026-04-01 16:13:41,591 WARNING "C:\Program Files\DinoCapture-2.0-Uninstall\setup.exe" /s /f1"C:\Program Files\DinoCapture-2.0-Uninstall\uninstall.iss" command returns code 2147753984
None
Uninstallation done
Le paquet importé dans WAPT quant à lui s'installe bien mais ne se désinstalle pas correctement :

Code : Tout sélectionner

Waiting for the removal of key: {683A259B-BCA2-4161-9B23-2110F2AE472C} from Windows registry
Fatal error : Uninstallkey still present
Traceback (most recent call last):
  File "<string>", line 1693, in run
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 891, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 1544, in _run
    self.result = self.wapt.remove(self.packagenames,
  File "C:\Program Files (x86)\wapt\common.py", line 6017, in remove
    setuphelpers.error('Uninstallkey still present')
  File "C:\Program Files (x86)\wapt\waptutils.py", line 2176, in error
    raise EWaptSetupException('Fatal error : %s' % reason)
waptutils.EWaptSetupException: Fatal error : Uninstallkey still present

EWaptSetupException: Fatal error : Uninstallkey still present
Traceback (most recent call last):
  File "<string>", line 1693, in run
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 891, in run
    self._run()
  File "C:\Program Files (x86)\wapt\waptservice\waptservice_common.py", line 1544, in _run
    self.result = self.wapt.remove(self.packagenames,
  File "C:\Program Files (x86)\wapt\common.py", line 6017, in remove
    setuphelpers.error('Uninstallkey still present')
  File "C:\Program Files (x86)\wapt\waptutils.py", line 2176, in error
    raise EWaptSetupException('Fatal error : %s' % reason)
waptutils.EWaptSetupException: Fatal error : Uninstallkey still present
Je n'ai pas les traces, on dirait que ma fonction custom uninstall n'est pas exécutée (?)
Est-ce que vous sauriez pourquoi ?

Merci de votre aide.
Cdlt.

Re: Fonction uninstall() non exécutée par WAPT ?

Publié : 08 avr. 2026 - 16:47
par erems
Bonjour,

j'ai retravaillé un peu le sujet aujourd'hui et je pense qu'il s'agit d'un bug (WAPT 2.6.1.17765) car sur une machine ayant le paquet installé :
- si je désinstalle le paquet depuis la console j'obtiens l'erreur indiquée dans mon post initial (et le logiciel est toujours sur la machine).
- si je vais sur le poste et que je lance : wapt-get uninstall erems-dinocapture -l debug

Code : Tout sélectionner

[DEBUG] Logging TSynLog with level=debug to C:\Program Files (x86)\wapt\log\wapt-get.log
2026-04-08 16:42:30,680 DEBUG Default encoding : utf-8
2026-04-08 16:42:30,680 DEBUG Caller: ['', 'uninstall', 'erems-dinocapture', '-l', 'debug']
2026-04-08 16:42:30,680 DEBUG Python path ['C:\\Program Files (x86)\\wapt', 'C:\\Program Files (x86)\\wapt\\python310.zip', 'C:\\Program Files (x86)\\wapt', 'C:\\Program Files (x86)\\wapt\\DLLs', 'C:\\Program Files (x86)\\wapt\\lib\\site-packages', 'C:\\Program Files (x86)\\wapt\\lib\\site-packages\\win32', 'C:\\Program Files (x86)\\wapt\\lib\\site-packages\\win32\\lib', 'C:\\Program Files (x86)\\wapt\\lib\\site-packages\\Pythonwin']
2026-04-08 16:42:30,680 INFO Using local waptservice configuration C:\Program Files (x86)\wapt\wapt-get.ini
2026-04-08 16:42:30,680 DEBUG Config file: C:\Program Files (x86)\wapt\wapt-get.ini
2026-04-08 16:42:30,680 INFO Using openssl OpenSSL 3.5.5 27 Jan 2026
2026-04-08 16:42:30,680 DEBUG Thread 11812 is connecting to wapt db
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
2026-04-08 16:42:30,699 INFO User Groups:[]
2026-04-08 16:42:30,699 DEBUG Using host certificate C:\Program Files (x86)\wapt\private\4c4c4544-0053-5410-8034-c4c04f374a32.pem for repo global auth
2026-04-08 16:42:30,699 DEBUG 11812 Loading config from file C:\Program Files (x86)\wapt\conf.d\cfg-all-maturities.json
2026-04-08 16:42:30,699 DEBUG 11812 Loading config from file C:\Program Files (x86)\wapt\conf.d\cfg-windows-update.json
2026-04-08 16:42:30,699 DEBUG 11812 Loading config from file C:\Program Files (x86)\wapt\conf.d\Config_Maturities.json
2026-04-08 16:42:30,699 INFO WAPT base directory : C:\Program Files (x86)\wapt
2026-04-08 16:42:30,699 DEBUG Checking if old install in progress
2026-04-08 16:42:30,716 DEBUG reset stalled install_status in database
2026-04-08 16:42:30,716 DEBUG Thread 11812 is connecting to wapt db
Uninstalling erems-dinocapture ...
2026-04-08 16:42:30,728 DEBUG Sourcing setup from DB
2026-04-08 16:42:30,728 INFO   sourcing setuppy file None
2026-04-08 16:42:30,728 DEBUG Import source code as __waptsetup_CMXIWURP55__
2026-04-08 16:42:30,744 INFO   executing setup.uninstall({})
Lancement de la désinstallation DinoCapture
"C:\Program Files\DinoCapture-2.0-Uninstall\setup.exe" /s /f1"C:\Program Files\DinoCapture-2.0-Uninstall\uninstall.iss"
2026-04-08 16:42:30,744 INFO Run ""C:\Program Files\DinoCapture-2.0-Uninstall\setup.exe" /s /f1"C:\Program Files\DinoCapture-2.0-Uninstall\uninstall.iss""
2026-04-08 16:42:46,256 WARNING "C:\Program Files\DinoCapture-2.0-Uninstall\setup.exe" /s /f1"C:\Program Files\DinoCapture-2.0-Uninstall\uninstall.iss" command returns code 2147753984
2026-04-08 16:42:46,316 DEBUG Removing module: __waptsetup_CMXIWURP55__, refcnt: 3
2026-04-08 16:42:46,316 DEBUG   Change current directory to C:\Windows\System32
None
Uninstallation done
20260408 14424619  ! rotat wapt-get 2.6.1.17765 TSynLog 2.4.13434 {4 9.47 7.05 3.6GB/7.9GB 66581b01}
20260408 14424619  ! info  SetThreadName 1 2e24 11812=Main
20260408 14424619  ! info  wapt-get terminate
Tout se passe bien, on voit que la fonction uninstall est bien appelée et le logiciel est effectivement désinstallé.

Pourriez-vous nous aider SVP ? Je peux transmettre les sources du paquet si vous le souhaitez.
Merci.

Re: Fonction uninstall() non exécutée par WAPT ?

Publié : 08 avr. 2026 - 17:16
par sfonteneau
Bonjour

Désolé je croyais avoir répondu a votre post mais visiblement nonn

Dans votre code ajoutez cette ligne à la fin de install :

Code : Tout sélectionner

uninstallkey.remove(r'{683A259B-BCA2-4161-9B23-2110F2AE472C}')
pour demander a wapt d'oublier la clé et de ne par enregistrer cette clé dans la db wapt

Re: Fonction uninstall() non exécutée par WAPT ?

Publié : 10 avr. 2026 - 09:43
par erems
Bonjour,

merci bien effectivement cela fonctionne.

Est-ce qu'il faut faire cela systématiquement lorsque l'on souhaite utiliser une fonction uninstall() personnalisée dans un paquet WAPT ?

Cordialement.

Re: [RESOLU] Fonction uninstall() non exécutée par WAPT ?

Publié : 10 avr. 2026 - 10:04
par dcardon
Bonjour erems,

la fonction uninstall vient en complément de la fonction de désinstallation intégrée par défaut dans Wapt avec la uninstallkey.

Donc si vous faite la désinstallation explicetement dans votre uninstall, il faut bien supprimer la uninstallkey, sinon la commande d'uninstall sera lancé deux fois (et va donc planter). On va jeter un coup d'oeil à la doc pour voir si ça peut être mieux expliqué.

en tout cas merci pour le retour :-)

Cordialement,

Denis