Page 1 sur 1

Pop-up pour redémarrer

Posté : 14 juin 2024 - 09:28
par Carla Scardigli
Bonjour,

Est-il possible, dans un paquet WAPT, de réaliser un système de Pop-up ?
Nous aimerions qu'une pop-up s’affiche sur l'écran de l'utilisateur.
Cette pop-up servirait à redémarrer la machine. L'utilisateur doit pouvoir interagir avec elle.

Voici un exemple de ce que nous voulons :
pop-up.png
pop-up.png (5.29 Kio) Vu 1872 fois

Et voici le code :

Code : Tout sélectionner

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"])
Si l'utilisateur clique sur "Oui" la machine doit redémarrer sinon rien ne se passe.

Lorsque nous lançons le script la pop-up ne s'affiche pas sur la machine.

La fonction "session_setup" peut-elle nous aider et si oui comment ?

Re: Pop-up pour redémarrer

Posté : 14 juin 2024 - 12:54
par sfonteneau
Bonjour
Carla Scardigli a écrit : 14 juin 2024 - 09:28 Lorsque nous lançons le script la pop-up ne s'affiche pas sur la machine.

La fonction "session_setup" peut-elle nous aider et si oui comment ?
Le code que vous avez mentionner fonctionnera mais uniquement en session_setup

regarde du coter de ce paquet pour prendre exemple :

https://wapt.tranquil.it/store/fr/detai ... _PROD.wapt

Re: Pop-up pour redémarrer

Posté : 19 juin 2024 - 12:11
par Carla Scardigli
Bonjour,

En effet mettre la fonction "pop _up" dans le "session_setup" fonctionne.
Or ce que nous voulons faire c'est désinstaller une application de la machine puis une fois qu'elle est désinstallée nous voulons demander à l'utilisateur s'il veut redémarrer la machine à l'aide de la pop up.

Voici le code de "session_setup" qui permet de désinstaller :

Code : Tout sélectionner

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()
Lorsque nous exécutons rien ne se passe, pas de pop up, le paquet commence son exécution puis se met en statut "OK" sans procéder à la désinstallation.

Le problème est que la fonction "install" ne possède pas les mêmes privilèges que la fonction "session_setup" car cette dernière récupère les droits de l'utilisateur. Un utilisateur ne possède pas les droits pour installer ou désinstaller des logiciels.

Y aurait-il un moyen d'encapsuler la fonction "session_setup" dans la fonction"install" ? Est-ce que cette solution réglerait le problème des droits ?
Comment pouvons nous faire pour que cela fonctionne ?

Re: Pop-up pour redémarrer

Posté : 19 juin 2024 - 13:05
par sfonteneau
Dans l'exemple que j'ai envoyer dans mon message précédent il y a :

Code : Tout sélectionner

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
ça lance une execution de code dans des session ouverte

Dans ce cas précis ça lance:
wapt-get --hide session-setup tis-toto -f

mais vous pouvez lancer ce que vous voulez

Re: Pop-up pour redémarrer

Posté : 19 juin 2024 - 14:16
par Carla Scardigli
Bonjour,

Je ne suis pas sûr de comprendre comment utiliser ce code.
Dois-je mettre le code de ma pop up dans le "run_session_setup" ? Comment utiliser cette fonction ?
A quoi servent les arguments "get_active_sessions" et "start_interactive_process" ?

Re: Pop-up pour redémarrer

Posté : 25 juin 2024 - 09:30
par sfonteneau
Carla Scardigli a écrit : 19 juin 2024 - 14:16 Dois-je mettre le code de ma pop up dans le "run_session_setup" ?
Oui c'est ça
Carla Scardigli a écrit : 19 juin 2024 - 14:16 A quoi servent les arguments "get_active_sessions" et "start_interactive_process" ?
get_active_sessions : récupère les session courante (ouverte)

start_interactive_process : sert a lancer du code dans la session ouverte (session_id)

dans ce cas :

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