[RISOLTO] killalltasks non uccide le attività in esecuzione

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
brice73
Messaggi: 42
Iscrizioni: 13 febbraio 2023 - ore 8:05

15 febbraio 2023 - 17:21

Buongiorno,

Ho un problema con la funzione killalltasks che non consente di terminare i processi durante l'installazione di un pacchetto.

Nella funzione def install() di un pacchetto software portatile (Phyloboite.exe), l'eseguibile dell'applicazione viene avviato con il seguente comando:

Codice: Seleziona tutto

run('C:\AppsPortables\Phyloboite\Phyloboite.exe')
L'applicazione si avvia (in modalità di compatibilità con Windows XP Service Pack 3, come consigliato dalla procedura guidata di compatibilità) e lo script di installazione continua, ma il comando `killalltasks` (sempre all'interno di `def install()`) non riesce a chiudere l'applicazione. Inoltre, la funzione `isrunning` applicata a ciascuna attività non restituisce "True".

La variabile globale taskstokill è definita in setup.py come segue:

Codice: Seleziona tutto

taskstokill= ['Phyloboite.exe','_Phylo00.exe']
e la funzione killalltasks viene chiamata in questo modo:

Codice: Seleziona tutto

killalltasks(taskstokill,include_children=True)

Tuttavia, aprendo il task manager viene mostrata chiaramente l'esecuzione dei due processi 'Phyloboite.exe' e '_Phylo00.exe' e, aprendo manualmente una finestra del prompt dei comandi DOS, è possibile terminare manualmente queste due attività.

Il problema potrebbe essere legato alla modalità di compatibilità che avvia l'installazione a schermo intero e ti fa perdere il controllo di tutto il resto (barra delle applicazioni, pulsante di avvio...)?

WAPT Enterprise 2.3.0.13505
Server WAPT con Ubuntu 20.04
Amministrazione/creazione di pacchetti in Windows 10
WAPT Enterprise 2.6.1.17765
Server WAPT su Debian 13
Amministrazione/creazione di pacchetti su Windows 11/10
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

16 febbraio 2023 - 18:07

Ciao Brice,

per isolare meglio il problema:
* Potresti provare a terminarlo da PyScripter per vedere se si tratta di un problema di contesto?
* Potresti provare a terminarlo dal prompt dei comandi con `taskkill /f /im myprogram.exe`?

Grazie,

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
brice73
Messaggi: 42
Iscrizioni: 13 febbraio 2023 - ore 8:05

17 febbraio 2023 - 13:13

Ciao Denis,

Il programma Phyloboite.exe, una volta eseguito, avvia il processo _Phylo00.exe. Posso effettivamente terminare entrambi i processi terminando il processo figlio _Phylo00.exe, sia dal prompt dei comandi che dall'interprete della riga di comando di PyScripter, usando killalltasks. (Per fare ciò, tuttavia, devo passare attraverso il Task Manager, ridurre a icona il processo che, una volta avviato, occupa l'intero schermo e non una finestra, e quindi avviare un prompt dei comandi o PyScripter).

Il problema principale è che l'applicazione portatile che voglio distribuire (Phyloboite.exe) richiede privilegi di amministratore per essere eseguita. Per risolvere questo problema, ho creato una chiave di registro nella funzione install() in modo che tutti gli utenti possano eseguire l'applicazione con privilegi di amministratore e in modalità di compatibilità con Windows XP SP3

Codice: Seleziona tutto

registry_setstring(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers","C:\AppsPortables\Phyloboite\Phyloboite.exe","~ RUNASADMIN WINXPSP3 RUNASINVOKER", type=REG_SZ)
Il problema è che, nonostante ciò, una volta distribuita l'applicazione sulle workstation, è effettivamente necessario aprirla una volta con un account amministratore prima che gli utenti possano avviare l'applicazione con diritti di amministratore.

Per aggirare questo problema di UAC, ho voluto provare ad aprire e poi chiudere l'applicazione durante l'installazione. Dopo diversi tentativi, e a causa dell'inoperatività di `killalltasks` in `install()`, ho creato un file eseguibile (da un file .bat) che esegue questa operazione e viene avviato durante l'installazione (all'interno della funzione `install()`). I test di installazione/disinstallazione con PyScripter non mostrano particolari problemi; l'applicazione si apre per alcuni secondi (3), quindi si chiude e l'installazione si completa. Tuttavia, dopo un test di distribuzione reale con le macchine spente, l'installazione dell'applicazione non si completa e sembra funzionare all'infinito.

Esiste una soluzione al problema di un'applicazione portatile che richiede diritti di amministratore per essere avviata?

ps1: Per tua informazione, il file .bat da cui viene creato il file .exe contiene i seguenti comandi:

Codice: Seleziona tutto

start C:\AppsPortables\Phyloboite\Phyloboite.exe && timeout /t 3 && taskkill /f /im "_Phylo00.exe"


(ps2: un'altra cosa curiosa è che la funzione killalltasks effettivamente uccide il processo _Phylo00.exe in esecuzione durante la disinstallazione quando viene chiamata la funzione uninstall()).



grazie in anticipo
WAPT Enterprise 2.6.1.17765
Server WAPT su Debian 13
Amministrazione/creazione di pacchetti su Windows 11/10
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

17 febbraio 2023 - 14:27

Ciao Brice,

Non ho una risposta al tuo problema, tuttavia come possibile metodo di indagine dovresti provare a installarlo in un account di SISTEMA locale, utilizzato dall'agente WAPT sulla macchina, per vedere come si comporta.

Per eseguire il test, è possibile installare il pacchetto tis-sysinternals-pstools ed eseguire

Codice: Seleziona tutto

psexec -s -i cmd.exe


Quindi eseguire l'installazione in questo cmd.exe. Una differenza notevole tra l'account Amministratore locale e l'account Sistema locale è che il Sistema locale non ha un desktop predefinito. Questo può causare il malfunzionamento di alcuni programmi di installazione/software mal scritti.

Per quanto riguarda la questione dell'avvio come amministratore, ti consiglio di verificare quali file necessitano effettivamente di accesso in lettura e scrittura per il software in questione utilizzando un Process Explorer o un equivalente e di impostare gli ACL corretti sui file/directory/chiavi di registro corrispondenti.

Sinceramente,

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
brice73
Messaggi: 42
Iscrizioni: 13 febbraio 2023 - ore 8:05

17 febbraio 2023 - 14:44

Ciao Denis,

grazie per il tuo consiglio, che cercherò di approfondire.

Mentre testavo qualcos'altro sulla macchina di prova, ho notato che, nonostante l'agente WAPT non si sia arrestato durante l'installazione dell'applicazione Phyloboite (ho annullato l'attività dopo circa dieci minuti, dato che si trattava di un pacchetto inferiore a 10 MB), sembra che l'applicazione si sia installata correttamente e che io sia riuscito ad avviarla direttamente con un account utente corrente. Tuttavia, il pacchetto continua a mostrare un errore/richiede installazione e l'agente WAPT non si arresta quando la macchina viene spenta mentre l'installazione è in corso, quindi la procedura di installazione e distribuzione non funziona...

Cordiali saluti,
WAPT Enterprise 2.6.1.17765
Server WAPT su Debian 13
Amministrazione/creazione di pacchetti su Windows 11/10
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

17 febbraio 2023 - 16:27

Ciao Brice,

la funzione `run()` ha un timeout, il che significa che dopo un certo periodo di tempo interrompe tutto ciò che è stato avviato e restituisce un codice di errore.

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
brice73
Messaggi: 42
Iscrizioni: 13 febbraio 2023 - ore 8:05

23 febbraio 2023 - 18:07

Infine, l'installazione del pacchetto ha funzionato; il file .exe ha aperto e chiuso l'applicazione durante l'installazione, risolvendo il problema di UAC. :) Il problema di installazione del pacchetto potrebbe essere derivato da una connessione di rete lenta su una delle macchine di test. Il software è stato distribuito con successo su numerose macchine e i pochi errori di installazione sono stati facilmente risolti riavviando il programma.
WAPT Enterprise 2.6.1.17765
Server WAPT su Debian 13
Amministrazione/creazione di pacchetti su Windows 11/10
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

24 febbraio 2023 - 09:42

Ciao Brice,

grazie per il feedback. Per quanto riguarda il problema della lentezza della rete, intendi dire che il programma di installazione si connette a una risorsa di rete per completare l'installazione? Se possibile, si consiglia di utilizzare pacchetti WAPT autonomi per evitare questo tipo di problema (ovvero, avere tutto nel pacchetto). L'agente WAPT scarica i pacchetti e li memorizza nella cache durante il giorno (ogni 1,5 ore) e li installa allo spegnimento del computer o su richiesta. Questo previene problemi di connettività di rete durante l'installazione.

Contrassegno la discussione come risolta.

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
brice73
Messaggi: 42
Iscrizioni: 13 febbraio 2023 - ore 8:05

26 febbraio 2023 - 14:30

Ciao Denis,
inizialmente non avevo selezionato la casella per il download del pacchetto durante l'aggiornamento del client e la macchina di test aveva una connessione di rete limitata e molto lenta. I primi tentativi di installazione sono falliti. Abilitando il download del pacchetto e aumentando il timeout (quello per il file .exe creato dal file batch), e testando su un'altra macchina, l'installazione è andata a buon fine. Cordiali
saluti,
WAPT Enterprise 2.6.1.17765
Server WAPT su Debian 13
Amministrazione/creazione di pacchetti su Windows 11/10
Bloccato