Pagina 1 di 1

Pop-up per riavviare

Pubblicato: 14 giugno 2024 - 09:28
di Carla Scardigli
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 3699 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?

Re: Pop-up per riavviare

Pubblicato: 14 giugno 2024 - 12:54
di sfontenau
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

Re: Pop-up per riavviare

Pubblicato: 19 giugno 2024 - 12:11
di Carla Scardigli
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?

Re: Pop-up per riavviare

Pubblicato: 19 giugno 2024 - 13:05
di sfontenau
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

Re: Pop-up per riavviare

Pubblicato: 19 giugno 2024 - 14:16
di Carla Scardigli
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"?

Re: Pop-up per riavviare

Pubblicato: 25 giugno 2024 - 09:30
di sfontenau
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