Pagina 1 di 1

[RISOLTO] Utilizzo della funzione start_interactive_process per l'interazione dell'utente durante la distribuzione

Pubblicato: 5 dicembre 2024 - 10:12
di fobrien
Buongiorno,

Mi prendo la libertà di sollevare questo argomento in seguito al post (viewtopic.php?p=14558#p14558) che avevo aperto in merito alla possibile interazione con gli utenti durante la distribuzione di un pacchetto con WAPT.

Sfortunatamente, sebbene la mia riga di comando che richiamava uno script PowerShell esterno e consentiva la visualizzazione di un popup all'utente funzionasse perfettamente durante i test locali con PyScripter, la situazione era completamente diversa quando distribuivo il pacchetto tramite WAPT perché non veniva visualizzato nulla.

Quindi ho voluto adattare questa chiamata allo script di PowerShell utilizzando la funzione avvia_processo_interattivo come aveva indicato Simon, e sono riuscito a creare la seguente riga di comando che funziona perfettamente in locale con PyScripter:

Codice: Seleziona tutto

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)
Tuttavia, se pubblico il pacchetto e provo la distribuzione su un computer, ricevo questo messaggio di errore:

Immagine

Tuttavia, la directory in questione è completamente vuota perché, credo, viene utilizzata solo occasionalmente e temporaneamente dal pacchetto (specifico che tutti i file necessari sono presenti nella directory del pacchetto fin dall'inizio).

La mia domanda è: questo fenomeno è normale e qual è la funzione? avvia_processo_interattivo È in grado di accedere ai file dalla directory nativa del pacchetto?

Grazie in anticipo.

Fred

Re: Utilizzo della funzione start_interactive_process per l'interazione dell'utente durante la distribuzione

Pubblicato: 5 dicembre 2024 - 10:53
di dcardon
Ciao Frédéric,

immagino che tu stia chiamando questa funzione all'interno della funzione `install()` (sarebbe meglio avere l'intero script, se possibile). Il contenuto del pacchetto viene decompresso in una directory temporanea in `%TEMP%`. Se `psexec.exe` è presente nel pacchetto, verrà decompresso nella directory temporanea. Tuttavia, questo è un file che viene eliminato immediatamente dalla maggior parte dei programmi antivirus, quindi dovresti controllare prima...

Cordiali saluti,

Denis

Re: Utilizzo della funzione start_interactive_process per l'interazione dell'utente durante la distribuzione

Pubblicato: 6 dicembre 2024 - 15:48
di fobrien
Ciao Denis,

Grazie per la risposta.
Infatti, lo script viene eseguito nella parte def install(): Ed ecco il codice completo:

Codice: Seleziona tutto

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)
Ho provato in parallelo a creare una directory accessibile a tutti gli utenti localmente, a copiarvi gli eseguibili necessari (incluso "PsExec.exe") e poi a richiamarla dal mio script Python.
Lo script funziona perfettamente da PyScripter, la directory viene creata correttamente e i file non vengono eliminati dall'antivirus.

Tuttavia, non funziona nemmeno se eseguito come pacchetto.

Ci sono punti specifici da osservare con la funzione? avvia_processo_interattivo ?

Grazie in anticipo.

Fred

Re: Utilizzo della funzione start_interactive_process per l'interazione dell'utente durante la distribuzione

Pubblicato: 10 dicembre 2024 - 16:21
di fobrien
Ciao,

sono finalmente riuscito a risolvere il problema modificando la sintassi della riga di comando e ora la notifica viene visualizzata correttamente nel contesto utente.
Tuttavia, ho optato per un'attività pianificata e temporanea per evitare di utilizzare i processi "PsExec.exe" e "ServiceUI.exe", che a volte vengono interpretati erroneamente dagli EDR in termini di comportamento.

Fred

Re: Utilizzo della funzione start_interactive_process per l'interazione dell'utente durante la distribuzione

Pubblicato: 12 gennaio 2026 - 23:58
di luc91
Penso che la tua soluzione con l'attività pianificata sia stata alla fine più semplice. Evita i problemi con PsExec e ServiceUI, soprattutto con software antivirus o EDR che possono bloccarli.