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
