Pop-up pour redémarrer

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
Répondre
Carla Scardigli
Messages : 6
Enregistré le : 30 avr. 2024 - 08:22

14 juin 2024 - 09:28

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 1870 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 ?
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

14 juin 2024 - 12:54

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
Carla Scardigli
Messages : 6
Enregistré le : 30 avr. 2024 - 08:22

19 juin 2024 - 12:11

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 ?
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

19 juin 2024 - 13:05

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
Carla Scardigli
Messages : 6
Enregistré le : 30 avr. 2024 - 08:22

19 juin 2024 - 14:16

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" ?
Avatar du membre
sfonteneau
Expert WAPT
Messages : 2084
Enregistré le : 10 juil. 2014 - 23:52
Contact :

25 juin 2024 - 09:30

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
Répondre