Página 1 de 1

[RESUELTO] Uso de la función start_interactive_process para la interacción del usuario durante la implementación

Publicado: 5 de diciembre de 2024 - 10:12 a. m.
por fobrien
Buen día,

Me tomo la libertad de plantear este tema a continuación de la publicación (viewtopic.php?p=14558#p14558) que había abierto respecto a la posible interacción con los usuarios al momento de desplegar un paquete con WAPT.

Lamentablemente, aunque mi línea de comando que llamaba a un script externo de PowerShell y permitía que se mostrara una ventana emergente al usuario funcionó perfectamente al realizar pruebas locales con PyScripter, fue una historia completamente diferente al implementar el paquete a través de WAPT porque no se mostró nada.

Entonces quería adaptar esta llamada de script de PowerShell usando la función iniciar_proceso_interactivo como había indicado Simon, logré construir la siguiente línea de comando que funciona perfectamente localmente con PyScripter:

Código: Seleccionar todo

notification_folder = makepath(basedir, "Notification")

for session_id in get_active_sessions():
	popup=notification_folder + "\\PsExec.exe"
        popup_command_exec="-s powershell.exe " + notification_folder + "\\ServiceUI.exe C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoLogo -Noprofile -WindowStyle Hidden -file " + notification_folder + "\\Notification.ps1 -config " + notification_folder + "\\upgrade.xml"
        start_interactive_process(popup, popup_command_exec, session_id=session_id,minimize=True)
Sin embargo, si publico el paquete y pruebo la implementación en una computadora, aparece este mensaje de error:

Imagen

Sin embargo, el directorio en cuestión está completamente vacío porque creo que el paquete lo utiliza solo ocasionalmente y temporalmente (especifico que todos los archivos necesarios están presentes en el directorio del paquete desde el principio).

Mi pregunta es: ¿es normal este fenómeno y cuál es la función? iniciar_proceso_interactivo ¿Es capaz de acceder a archivos desde el directorio nativo del paquete?

Gracias de antemano.

Fred

Re: Uso de la función start_interactive_process para la interacción del usuario durante la implementación

Publicado: 5 de diciembre de 2024 - 10:53
por dcardon
Hola Frédéric,

imagino que estás llamando a esta función dentro de la función `install()` (lo ideal es usar el script completo si es posible). El contenido del paquete se descomprime en un directorio temporal en `%TEMP%`. Si `psexec.exe` está presente en el paquete, se descomprimirá en el directorio temporal. Sin embargo, este es un archivo que la mayoría de los antivirus eliminan automáticamente, así que deberías comprobarlo primero...

Saludos,

Denis

Re: Uso de la función start_interactive_process para la interacción del usuario durante la implementación

Publicado: 6 de diciembre de 2024 - 15:48
por fobrien
Hola Denis,

Gracias por tu respuesta.
De hecho, el script se ejecuta en la parte def instalar(): Y aquí está el código completo:

Código: Seleccionar todo

def install():

	notification_folder = makepath(basedir, "Notification")

	for session_id in get_active_sessions():
		popup=notification_folder + "\\PsExec.exe"
        	popup_command_exec="-s powershell.exe " + notification_folder + "\\ServiceUI.exe C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -NoLogo -Noprofile -WindowStyle Hidden -file " + notification_folder + "\\Notification.ps1 -config " + notification_folder + "\\upgrade.xml"
        	start_interactive_process(popup, popup_command_exec, session_id=session_id,minimize=True)
        
        sys.exit(0)
Intenté en paralelo crear un directorio accesible para todos los usuarios localmente, copiar en él los ejecutables necesarios (incluido "PsExec.exe") y luego llamarlo desde mi script de Python.
El script funciona perfectamente desde PyScripter, el directorio se crea correctamente y los archivos no son eliminados por el antivirus.

Sin embargo, tampoco funciona cuando se ejecuta como paquete.

¿Hay algunos puntos específicos a tener en cuenta con la función? iniciar_proceso_interactivo ?

Gracias de antemano.

Fred

Re: Uso de la función start_interactive_process para la interacción del usuario durante la implementación

Publicado: 10 de diciembre de 2024 - 16:21
por fobrien
Hola,

finalmente logré resolver el problema cambiando la sintaxis de la línea de comandos, y ahora la notificación se muestra correctamente en el contexto del usuario.
Sin embargo, opté por una tarea programada y efímera para evitar usar los procesos "PsExec.exe" y "ServiceUI.exe", que a veces son malinterpretados por los EDR en cuanto a su comportamiento.

Fred

Re: Uso de la función start_interactive_process para la interacción del usuario durante la implementación

Publicado: 12 de enero de 2026 - 23:58
por luc91
Creo que tu solución con la tarea programada fue más sencilla al final. Evita los problemas con PsExec y ServiceUI, especialmente con software antivirus o EDR que pueden bloquearlos.