Pop-up per riavviare

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
Risposta
Carla Scardigli
Messaggi: 6
Registrazione: 30 aprile 2024 - 08:22

14 giugno 2024 - 09:28

Buongiorno,

È possibile implementare un sistema pop-up in un pacchetto WAPT?
Vorremmo che sullo schermo dell'utente apparisse un pop-up.
Questo pop-up servirà per riavviare il computer. L'utente deve poter interagire con esso.

Ecco un esempio di ciò che vogliamo:
pop-up.png
pop-up.png (5,29 KB) Visualizzato 3693 volte

Ed ecco il codice:

Codice: Seleziona tutto

import ctypes
MB_YESNO = 0x04
MB_ICONQUESTION = 0x20
IDYES = 6
IDNO = 7
reponse = ctypes.windll.user32.MessageBoxW(0, message + "voulez-vous redémarrer la machine maintenant ?", "Redémarrage", MB_YESNO | MB_ICONQUESTION)
if reponse == IDYES:
      subprocess.call(["shutdown", "-r", "-t", "0"])
Se l'utente clicca su "Sì" la macchina dovrebbe riavviarsi, altrimenti non succede nulla.

Quando eseguiamo lo script, il pop-up non appare sulla macchina.

La funzione "session_setup" può aiutarci? Se sì, in che modo?
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

14 giugno 2024 - 12:54

Buongiorno
Carla Scardigli ha scritto: 14 giugno 2024 - 09:28 Quando eseguiamo lo script, il pop-up non compare sul computer.

La funzione "session_setup" può esserci d'aiuto? Se sì, come?
Il codice che hai menzionato funzionerà, ma solo in session_setup

Per un esempio, dai un'occhiata a questo pacchetto:

https://wapt.tranquil.it/store/fr/detai ... _PROD.wapt
Carla Scardigli
Messaggi: 6
Registrazione: 30 aprile 2024 - 08:22

19 giugno 2024 - 12:11

Buongiorno,

In effetti, inserire la funzione "pop _up" in "session_setup" funziona.
Ciò che vogliamo fare è disinstallare un'applicazione dal computer e, una volta disinstallata, chiedere all'utente se desidera riavviare il computer tramite il pop-up.

Ecco il codice per "session_setup" che consente la disinstallazione:

Codice: Seleziona tutto

print('Arrêt de la tâche en cours...')
killalltasks('ssmon.exe')
time.sleep(5)
#Désinstallation et nettoyage
remove_file(log_path + r'\APP.LOG')
run(install_path + r'\unins000.exe /VERYSILENT')
remove_tree(install_path)
# Pop up qui demande à l'utilisateur s'il veut redémarrer la machine
pop_up()
Quando lo eseguiamo, non succede nulla, non appare alcun pop-up, il pacchetto inizia l'esecuzione e poi passa allo stato "OK" senza procedere con la disinstallazione.

Il problema è che la funzione "install" non ha gli stessi privilegi della funzione "session_setup", perché quest'ultima eredita i diritti dell'utente. Un utente non ha i diritti per installare o disinstallare software.

Esiste un modo per incapsulare la funzione "session_setup" all'interno della funzione "install"? Questa soluzione risolverebbe il problema dei permessi?
Come possiamo far funzionare tutto questo?
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

19 giugno 2024 - 13:05

Nell'esempio che ho inviato nel mio messaggio precedente, c'è:

Codice: Seleziona tutto

from waptservice.enterprise import get_active_sessions, start_interactive_process
def run_session_setup(package_name):
    for session_id in get_active_sessions():
        start_interactive_process("wapt-get", "--hide session-setup %s -f" % package_name, session_id=session_id)  # , minimize=True
Avvia l'esecuzione del codice nelle sessioni aperte

In questo caso specifico, avvia:
wapt-get --hide session-setup tis-toto -f

ma puoi lanciare quello che vuoi
Carla Scardigli
Messaggi: 6
Registrazione: 30 aprile 2024 - 08:22

19 giugno 2024 - 14:16

Ciao,

non sono sicuro di aver capito come usare questo codice.
Devo inserire il codice del mio pop-up nella funzione "run_session_setup"? Come si usa questa funzione?
A cosa servono gli argomenti "get_active_sessions" e "start_interactive_process"?
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

25 giugno 2024 - 09:30

Carla Scardigli ha scritto: 19 giugno 2024 - 14:16 Devo inserire il codice per il mio pop-up in "run_session_setup"?
Sì, è proprio così
Carla Scardigli ha scritto: 19 giugno 2024 - 14:16 A cosa servono gli argomenti "get_active_sessions" e "start_interactive_process"?
get_active_sessions: recupera le sessioni correnti (aperte)

start_interactive_process: utilizzato per avviare il codice nella sessione aperta (session_id)

in questo caso:

wapt-get --hide session-setup tis-toto -f
Risposta