„Automatische Migration“ (Deinstallation/Neuinstallation) über die Funktion audit() und den Systemkontext
Veröffentlicht: 25. November 2025 - 12:05 Uhr
Hallo zusammen,
Ich arbeite derzeit an einem Skript zur Standardisierung unseres Softwareinventars. Mein Ziel ist es, regelmäßig manuell (außerhalb von WAPT) installierte Software zu identifizieren und, falls diese einem Paket in unserem Store entspricht, die Deinstallation zu erzwingen und sie anschließend ordnungsgemäß über WAPT neu zu installieren.
Ich hatte erwogen, für diese Aufgabe die Funktion audit() zu verwenden, mit einer Logik wie dieser:
Ich habe jedoch Zweifel an der Relevanz und der technischen Machbarkeit dieser Methode und möchte meine Intuition mit Ihnen abklären lassen:
Ausführungskontext: audit() wird vom WAPT-Dienst (Lokales System) ausgeführt. Wenn der Deinstallationsbefehl eine grafische Oberfläche aufruft (selbst eine einfache Bestätigung), wird er vermutlich fehlschlagen oder sich aufhängen, da der Dienst nicht mit der Benutzersitzung interagieren kann (Sitzungsproblem 0).
Benutzerinteraktion: Ich nehme an, dass die Verwendung von waptguihelper zur Benachrichtigung des Benutzers im Audit aus denselben Gründen verboten ist?
Ist es empfehlenswert, in der audit()-Funktion "umfangreiche" Änderungen (Deinstallation) vorzunehmen, oder sollte die audit-Funktion einfach einen "FEHLER"-Status melden?
Falls audit() nicht der richtige Ort dafür ist, was ist die beste Vorgehensweise in diesem Szenario? Gibt es einen anderen empfohlenen Mechanismus (z. B. session_setup())?
Aufrichtig
Ich arbeite derzeit an einem Skript zur Standardisierung unseres Softwareinventars. Mein Ziel ist es, regelmäßig manuell (außerhalb von WAPT) installierte Software zu identifizieren und, falls diese einem Paket in unserem Store entspricht, die Deinstallation zu erzwingen und sie anschließend ordnungsgemäß über WAPT neu zu installieren.
Ich hatte erwogen, für diese Aufgabe die Funktion audit() zu verwenden, mit einer Logik wie dieser:
Code: Alle auswählen
def audit():
# ... logique de détection ...
if logiciel_hors_wapt_detecte:
# Tentative de désinstallation
run(WAPT.uninstall_cmd(app["msi_product_code"]))
return "ERROR" # Pour déclencher une réinstallation ?
return "OK"Ausführungskontext: audit() wird vom WAPT-Dienst (Lokales System) ausgeführt. Wenn der Deinstallationsbefehl eine grafische Oberfläche aufruft (selbst eine einfache Bestätigung), wird er vermutlich fehlschlagen oder sich aufhängen, da der Dienst nicht mit der Benutzersitzung interagieren kann (Sitzungsproblem 0).
Benutzerinteraktion: Ich nehme an, dass die Verwendung von waptguihelper zur Benachrichtigung des Benutzers im Audit aus denselben Gründen verboten ist?
Ist es empfehlenswert, in der audit()-Funktion "umfangreiche" Änderungen (Deinstallation) vorzunehmen, oder sollte die audit-Funktion einfach einen "FEHLER"-Status melden?
Falls audit() nicht der richtige Ort dafür ist, was ist die beste Vorgehensweise in diesem Szenario? Gibt es einen anderen empfohlenen Mechanismus (z. B. session_setup())?
Aufrichtig