[RISOLTO] run_nofatal() non finisce mai

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
sebastien4444
Messaggi: 22
Registrazione: 14 settembre 2023 - 08:53

7 giugno 2024 - 17:58

Ciao,

ho un piccolo problema con questa funzione.

Devo installare un file da un .exe, per il quale devo fornire il parametro /verysilent per l'installazione silenziosa.
Poiché la funzione install_exe_if_needed non sembra consentire l'aggiunta di parametri (come invece fa install_msi_if_needed con le proprietà), sto usando run_as_administrator(myfile.exe, params="/verysilent").

Successivamente, devo copiare i file nella directory in cui è stato installato il software, quindi l'installazione deve essere completa affinché il percorso di copia esista. Pertanto, sto usando wait_uninstallkey_present() con la chiave di disinstallazione.

Infine, devo avviare un file .exe situato nella directory di installazione per avviare il servizio sul PC.
Poiché questo .exe non restituisce un codice di uscita, sto usando run_nofatal() per evitare un errore.

Il mio problema è che il mio file .exe viene eseguito correttamente perché vedo il servizio comparire sul mio computer, ma il print("avvio OK") che aggiungo subito dopo non viene mai visualizzato; Pertanto, l'esecuzione dell'installazione non termina mai.

Lo scopo di questa funzione non è forse proprio quello di essere eseguita e terminare senza attendere nulla?
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

7 giugno 2024 - 18:22

sebastien4444 ha scritto: 7 giugno 2024 - 17:58 Poiché la funzione install_exe_if_needed non sembra consentire l'aggiunta di parametri (come invece fa install_msi_if_needed con le proprietà), utilizzo run_as_administrator(myfile.exe, params="/verysilent").
Puoi inviare il tuo file setup.py; sarà più semplice

e se install_exe_if_needed consente di aggiungere un argomento con silentflags:

Esempio con VLC:

Codice: Seleziona tutto

    install_exe_if_needed("vlcsetup.exe",silentflags="/S",key="VLC media player",min_version="3.0.20")

run_as_administrator non dovrebbe essere utilizzato nei pacchetti poiché wapt avvia un account di sistema e quindi non è necessario.
usa semplicemente run
sebastien4444
Messaggi: 22
Registrazione: 14 settembre 2023 - 08:53

10 giugno 2024 - 11:25

Salve,

grazie per il suo feedback.

In effetti, durante l'installazione non avevo notato la presenza del parametro `silent` in `install_exe_if_needed`. :oops:

Tuttavia, questo non risolve il mio problema con l'avvio del file .exe. :?

Utilizzando `run()` invece di `run_as_administrator()`, il mio servizio si avvia (come quando utilizzavo `run_nofatal`), ma l'esecuzione dello script si blocca a quella riga e quindi non termina (pertanto, se compilo il pacchetto così com'è e lo distribuisco su un PC, l'installazione non viene mai completata).

La ringrazio in anticipo per il suo feedback.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

10 giugno 2024 - 11:46

Puoi inviare il tuo file setup.py; sarà più semplice ;)
sebastien4444
Messaggi: 22
Registrazione: 14 settembre 2023 - 08:53

11 giugno 2024 - 09:44

Buongiorno,

Ecco come appare:

Codice: Seleziona tutto

from setuphelpers import *

def install():
    install_exe = "UltraVNC Installer.exe"
    config_file = "ultravnc.ini"
    install_path = makepath("C:","Program Files","uvnc bvba","UltraVNC")
    service_path = makepath("C:","Program Files","uvnc bvba","UltraVNC","winvnc.exe")
    
    install_exe_if_needed(install_exe, , silentflags="/verysilent", key="Ultravnc2_is1")
   
    print("VNC installé")
   
    filecopyto(config_file, install_path)

    print("Config copiée")

    run(service_path)
    
    print("Service lancé")
Il software viene installato, il file di configurazione viene copiato correttamente, il servizio si avvia correttamente ma l'istruzione di stampa "Service started" non viene mai raggiunta e lo script termina solo dopo il timeout (e quindi con un errore).
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

13 giugno 2024 - 11:29

Ciao Sébastien,

è molto probabile che l'esecuzione di "winvnc.exe" non restituisca il controllo (in pratica, non viene eseguito come servizio) e quindi la funzione run() non restituisce il controllo. Dopo il timeout, terminerà il processo winvnc.exe e il pacchetto andrà in errore.

Probabilmente esiste un modo per dichiarare winvnc come servizio ed eseguirlo come tale per evitare questo problema di blocco.

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
sebastien4444
Messaggi: 22
Registrazione: 14 settembre 2023 - 08:53

14 giugno 2024 - 11:46

Ciao,

grazie per la risposta.

Sì, è proprio così, non appena si verifica l'errore, il programma si arresta.

Ho provato diverse funzioni Python di varie librerie che consentono l'esecuzione di file, ma non cambia nulla.

La cosa strana è che l'avvio di winvnc.exe tramite il prompt dei comandi non causa questo problema: il programma si avvia, il prompt compare quasi immediatamente e il programma rimane attivo.
Pensavo che le funzioni di esecuzione in Python fossero equivalenti all'avvio di un comando cmd.

Vabbè, troverò un altro modo. Grazie ancora.
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

14 giugno 2024 - 12:35

Ciao di nuovo Sébastien,

hai dato un'occhiata al pacchetto che abbiamo nello store

https://wapt.tranquil.it/store/en/detai ... _PROD.wapt?

Se l'obiettivo è eseguirlo come servizio, questo è il modo migliore per farlo.

Altrimenti, se hai davvero bisogno di replicare il comportamento di avvio di un comando in background, puoi dare un'occhiata al comando da riga di comando "start".

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
sebastien4444
Messaggi: 22
Registrazione: 14 settembre 2023 - 08:53

14 giugno 2024 - 15:50

Ottimo, grazie!

Esaminando il file setup.py nel tuo pacchetto, ho notato che dovevo aggiungere il parametro "-install" all'esecuzione di winvnc.exe (che in realtà è presente nella documentazione "Riga di comando" di UltraVNC, ma mi era sfuggito :? ).
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

17 giugno 2024 - 09:49

Ciao Sébastien,

grazie per il tuo feedback :-) . Sono contento che tu abbia trovato una soluzione.

Sentiti libero di parlare di WAPT; si diffonde molto anche con il passaparola :-) !

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
Bloccato