"Migración automática" (desinstalación/reinstalación) a través de la función audit() y el contexto del sistema
Publicado: 25 de noviembre de 2025 - 12:05 p. m.
Hola a todos,
Actualmente estoy trabajando en un script para estandarizar nuestro inventario de software. Mi objetivo es identificar periódicamente el software instalado manualmente (fuera de WAPT) y, si corresponde a un paquete de nuestra tienda, forzar su desinstalación y reinstalarlo correctamente mediante WAPT.
Había considerado usar la función audit() para esta tarea, con una lógica como esta:
Sin embargo, tengo dudas sobre la relevancia y viabilidad técnica de este método, y me gustaría confirmar mi intuición con usted:
Contexto de ejecución: audit() lo ejecuta el servicio WAPT (Sistema Local). Si el comando de desinstalación invoca una interfaz gráfica (incluso una simple confirmación), imagino que fallará o se bloqueará porque el servicio no puede interactuar con la sesión del usuario (problema de la Sesión 0).
Interacción del usuario: De manera similar, imagino que usar waptguihelper para notificar al usuario está prohibido en la auditoría por las mismas razones.
¿Se recomienda realizar cambios "pesados" (desinstalación) en la auditoría(), o la auditoría simplemente debería informar un estado "ERROR"?
Si audit() no es el lugar correcto, ¿cuál es la mejor práctica para este escenario? ¿Existe otro mecanismo recomendado (session_setup())?
Atentamente
Actualmente estoy trabajando en un script para estandarizar nuestro inventario de software. Mi objetivo es identificar periódicamente el software instalado manualmente (fuera de WAPT) y, si corresponde a un paquete de nuestra tienda, forzar su desinstalación y reinstalarlo correctamente mediante WAPT.
Había considerado usar la función audit() para esta tarea, con una lógica como esta:
Código: Seleccionar todo
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"Contexto de ejecución: audit() lo ejecuta el servicio WAPT (Sistema Local). Si el comando de desinstalación invoca una interfaz gráfica (incluso una simple confirmación), imagino que fallará o se bloqueará porque el servicio no puede interactuar con la sesión del usuario (problema de la Sesión 0).
Interacción del usuario: De manera similar, imagino que usar waptguihelper para notificar al usuario está prohibido en la auditoría por las mismas razones.
¿Se recomienda realizar cambios "pesados" (desinstalación) en la auditoría(), o la auditoría simplemente debería informar un estado "ERROR"?
Si audit() no es el lugar correcto, ¿cuál es la mejor práctica para este escenario? ¿Existe otro mecanismo recomendado (session_setup())?
Atentamente