Page 1 sur 1
[RESOLU] run_nofatal() ne termine jamais
Posté : 07 juin 2024 - 17:58
par sebastien4444
Bonjour,
J'ai un petit soucis avec cette fonction.
Je dois installer un fichier à partir d'un .exe auquel je dois fournir le paramètre /verysilent pour l'install silencieuse.
Comme la fonction install_exe_if_needed ne semble pas permettre d'ajouter des paramètres (comme le fait install_msi_if_needed avec properties), j'utilise run_as_administrator(monfichier.exe, params="/verysilent").
Suite à cela, j'ai besoin de copier des fichiers dans le répertoire où le logiciel s'est installé, il faut donc que l'install soit terminée pour que le chemin de copie existe, j'utilise donc wait_uninstallkey_present() avec la clé de désinstallation.
Enfin, j'ai besoin de lancer un fichier .exe présent dans le répertoire d'installation afin de lancer le service sur le PC.
Comme cet exe ne renvoit pas de code retour, j'utilise run_nofatal() pour ne pas terminer en erreur.
Mon problème est que l'exécution de mon .exe se fait bien car je vois apparaitre le service sur mon poste, mais le print("demarrage OK") que je mets juste après n'est jamais affiché ; donc l'execution de l'installation ne fini pas.
Le but de cette fonction n'est-elle pas justement d'executer et sortir sans attendre quoique ce soit ?
Re: run_nofatal() ne termine jamais
Posté : 07 juin 2024 - 18:22
par sfonteneau
sebastien4444 a écrit : ↑07 juin 2024 - 17:58
Comme la fonction install_exe_if_needed ne semble pas permettre d'ajouter des paramètres (comme le fait install_msi_if_needed avec properties), j'utilise run_as_administrator(monfichier.exe, params="/verysilent").
Vous pouvez-envoyer votre setup.py ce sera plus simple
et si si install_exe_if_needed permet l'ajout d'un argument avec silentflags:
exemple avec vlc:
Code : Tout sélectionner
install_exe_if_needed("vlcsetup.exe",silentflags="/S",key="VLC media player",min_version="3.0.20")
run_as_adminsitrator ne devrais pas être utiliser dans les paquet puisque wapt est lancer un compte system donc non necessaire.
utiliser juste run
Re: run_nofatal() ne termine jamais
Posté : 10 juin 2024 - 11:25
par sebastien4444
Bonjour,
Merci pour votre retour,
En effet pour l'installation, je n'avais pas fait attention à la présence du paramètre silent flag dans install_exe_if_needed
Par contre, ça ne change pas mon problème de lancement du fichier .exe
En utilisant run() au lieu de run_as_administrator(), j'ai bien mon service qui se lance (comme quand j'utilisais run_nofatal) mais le déroulement du script reste bloqué à cette ligne et le script ne se termine donc pas (donc si je buils le paquet en l'état et que je déploie sur un pc, l'installation ne termine jamais).
Merci d'avance pour vos retours.
Re: run_nofatal() ne termine jamais
Posté : 10 juin 2024 - 11:46
par sfonteneau
Vous pouvez-envoyer votre setup.py ce sera plus simple

Re: run_nofatal() ne termine jamais
Posté : 11 juin 2024 - 09:44
par sebastien4444
Bonjour,
Voilà ce que ça donne :
Code : Tout sélectionner
from setuphelpers import *
def install():
install_exe = "UltraVNC Installer.exe"
config_file = "ultravnc.ini"
install_path = makepath("C:","Program Files","uvnc bvba","UltraVNC")
service_path = makepath("C:","Program Files","uvnc bvba","UltraVNC","winvnc.exe")
install_exe_if_needed(install_exe, , silentflags="/verysilent", key="Ultravnc2_is1")
print("VNC installé")
filecopyto(config_file, install_path)
print("Config copiée")
run(service_path)
print("Service lancé")
Le logiciel s'installe, le fichier de config est bien copié, le service se lance bien mais le print de "Service lancé" n'est jamais atteint et le script ne termine qu'au bout du timeout (et en erreur du coup).
Re: run_nofatal() ne termine jamais
Posté : 13 juin 2024 - 11:29
par dcardon
Bonjour Sébastien,
il est très probable que l'exécution de "winvnc.exe" ne rend pas la main (en gros c'est pas lancé en tant que service) et que donc le run() ne rend pas la main. Après le timeout ça va killer le winvnc.exe qui aura été lancé et le paquet se mettre en erreur.
Il y a probablement une manière de déclarer winvnc en tant que service et de le lancer en tant que service pour éviter que ça soit bloquant.
Cordialement,
Denis
Re: run_nofatal() ne termine jamais
Posté : 14 juin 2024 - 11:46
par sebastien4444
Bonjour,
Merci pour la réponse.
Oui c'est ça, dès que l'erreur est levée, le programme se stoppe.
J'ai essayé différentes fonctions python de différentes librairies qui permettent l’exécution de fichier et ça ne change rien.
La bizarrerie est que le lancement de winvnc.exe via un invite de commande ne pose pas se soucis : le programme se lance, je récupère le prompt presque instantanément et le programme reste actif.
Moi qui pensais que les fonctions d'execution en python revenaient au même que lancer une commande cmd
Tant pis, je ferai autrement. encore merci
Re: run_nofatal() ne termine jamais
Posté : 14 juin 2024 - 12:35
par dcardon
Rebonjour Sébastien,
est ce que vous avez jeté un coup d'oeil au paquet que l'on a sur le store
https://wapt.tranquil.it/store/en/detai ... _PROD.wapt
Si l'objectif est de le faire tourner en tant que service, c'est la meilleur manière de faire.
Sinon si vous avez vraiment besoin de reproduire le comportement de lancement d'une commande en arrière plan, vous pouvez regarder la commande ligne de commande "start"
Cordialement,
Denis
Re: run_nofatal() ne termine jamais
Posté : 14 juin 2024 - 15:50
par sebastien4444
Super, merci !
En regardant le setup.py de votre paquet, j'ai pu voir qu'il fallait rajouter le paramètre "-install" à l'exécution de winvnc.exe (qui au final se trouve dans la doc "Ligne de commande" d'UltraVNC mais j'étais passé à côté

)
Re: run_nofatal() ne termine jamais
Posté : 17 juin 2024 - 09:49
par dcardon
Bonjour Sébastien,
merci pour ton retour

Heureux que vous ayez trouvé une résolution.
N'hésitez pas à parler de WAPT autour de vous, WAPT se dissémine aussi beaucoup à travers le bouche à oreille

!
Cordialement,
Denis