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 (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