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

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti Wapt.
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Bloccato
fobriano
Messaggi: 21
Registrazione: 26 settembre 2024 - 09:35

5 dicembre 2024 - 10:12

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
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

5 dicembre 2024 - 10:53

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
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
fobriano
Messaggi: 21
Registrazione: 26 settembre 2024 - 09:35

6 dicembre 2024 - 15:48

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
fobriano
Messaggi: 21
Registrazione: 26 settembre 2024 - 09:35

10 dicembre 2024 - 16:21

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
luc91
Messaggi: 7
Registrazione: 11 ottobre 2025 - 16:05

12 gennaio 2026 - 23:58

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.
Bloccato