créer paquet pronote

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
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

03 juil. 2022 - 16:55

bonjour
je souhaite créer un paquet pour installer le client pronote (index education)
j'ai donc un fichier .exe et un .iss pour l'install et un autre pour la désinstall. La commande batch pour lancer l'install en silencieux sur tous les postes est le suivant :

Code : Tout sélectionner

\\serveur\pronote\Install_PRNclient_FR_win64.exe -s -f1\\serveur\pronote\ClientPRONOTE.iss
pour la desinstallation voici les commandes

Code : Tout sélectionner

"%ProgramFiles(x86)%\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe -s -uninst -f1\\serveur\pronote\uninstPRONOTE.iss
Comment convertir ces commandes en langage python dans pyscripter afin de créer le paquet qui permette l'installation et la désinstallation?
merci
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

03 juil. 2022 - 18:28

Bon finalement après plusieurs essai j'ai fini par trouver les commandes que je voulais, et ça fonctionne depuis pyscripter.
  • Pour l'installation la commande 1 installe l'exe à l'aide du fichier réponse .iss préalablement créé (cf site indexeducation). La commande 2 copies les paramétres du proxy. La commande 3 copie les parametres du client avec le port TCP, l'adresse du serveur indexeduc et la désignation du client.
  • Pour la desinstallation, la commande 1 désinstalle à l'aide du fichier réponse de désinstallation .iss, la commande 2 supprime le dossier indexeducation qui semble resté et peut poser des couac pour une réinstallation.

Code : Tout sélectionner

def install():
    run(r'"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1A:\waptdev\pkg-pronoteclient-wapt\ClientPRONOTE.iss')
    run(r'xcopy "A:\waptdev\pkg-pronoteclient-wapt\ConfigClientsHttp.xcfg" "C:\ProgramData\IndexEducation\Commun\" /y')
    run(r'xcopy "A:\waptdev\pkg-pronoteclient-wapt\Client PRONOTE.xcfg" "C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2021-0\FR\Installations\{90AAC525-F174-C243-EA1F-DCD1FD499401}\" /y')

def uninstall():
    run(r'"%ProgramFiles(x86)%\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe" -s -uninst -f1A:\waptdev\pkg-pronoteclient-wapt\uninstPRONOTE.iss')
    run(r'rd "C:\ProgramData\IndexEducation" /s /q')
Le probleme c'est que quand je deploie l'appli sur un pc wapt me renvoie cette erreur :

Code : Tout sélectionner

CalledProcessErrorOutput: Command '"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1"ClientPRONOTE.iss"' returned non-zero exit status -2147213312.
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

04 juil. 2022 - 13:29

Bonjour


avez vous regarder le topic pronote déjà existant sur ce forum avec un code fonctionnel?

viewtopic.php?p=10396#p10396
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

09 juil. 2022 - 15:36

en effet ce topic est bien utile. Seulement la version globalisante ne fonctionne pas, celle du premier post, avec l'url de telechargement, la création des fichiers .iss...

donc seule option viable c'est de déposer les fichier .iss dans le dossier du paquet ainsi que les fichier config .xcfg pour proxy et serveur indexeducation

dans mon cas j'ai donc réussi à faire fonctionner l'installation avec cette commande :

Code : Tout sélectionner

def install():
    run(r'"Install_PRNclient_FR_2021.0.2.8_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2021-0\FR\Installations\{90AAC525-F174-C243-EA1F-DCD1FD499401}\Client PRONOTE.xcfg')
obligé de lancer le programme la premiere fois (puis l'arréter eventuellement) pour pouvoir copier les fichiers de config sinon les repertoires sont indisponible.

le seul hic c'est la désinstallation, je n'arrive pas à la faire fonctionner j'ai mis cette commande :

Code : Tout sélectionner

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{E20E5011-C887-40D8-8C26-99460A24F860}\setup.exe" -s -uninst -f1%s\uninstPRONOTE.iss' % basedir)
je ne comprend pas la difference entre remove et uninstall dans pyscripter. Le remove fonctionne bien dans les paquets où on injecte une clé de désinstallation. Mais pour pronote cest different et il faut passer par un fichier reponse .iss. Comment pouvoir rendre opérationnel la commande de desinstallation présente dans def uninstall? car dans wapt quand je fait désinstaller le paquet sur une machine pronote ne se désinstalle pas.
merci
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

26 août 2022 - 15:05

bonjour
j'ai créé le nouveau paquet avec la version 2022 en prenant soin de modifier les valeurs de la clé uninstallkey dans les fichiers .xcfg et les répertoires qui change de nom
Le pb reste toujours la commande de désinstallation qui ne marche pas. Je ne sais pas si a l'installation de la nouvelle version il créé un nouveau repertoir ou s'il ecrase l'ancien.

Et un autre pb recurrent que je ne comprend pas. depuis pyscripter en lançant l'installation pour tester ca marche nickel sur le PC qui accueille la console wapt. Mais si je déploie sur d'autres pc j'obtiens cette erreur :

File "C:\Program Files (x86)\wapt\waptutils.py", line 2126, in run
raise CalledProcessErrorOutput(proc.returncode, cmd, ''.join(output))
waptutils.CalledProcessErrorOutput: Command '"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1C:\\WINDOWS\\TEMP\\wapt4g0p39cy\\installPRONOTE.iss' returned non-zero exit status 1.
Output:'"Install_PRNclient_FR_2022.0.2.1_win64.exe"' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


pourquoi ça pointe vers le mauvais dossier : -f1C:\\WINDOWS\\TEMP\\wapt4g0p39cy\\installPRONOTE.iss ? dans l'idée il faudrait que le fichier installPRONOTE.iss soit récupéré à partir du dossier du paquet dans waptdev puisque je l'ai inséré dedans. Comment indiquer ce dossier? que signifie la variable %s? et % basedir?

voici le paquet :

Code : Tout sélectionner

uninstallkey = ['{D1124ED8-514E-40BF-9021-D3B3CA941A53}']

def install():
    run(r'"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
    import time
    time.sleep(3)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1%s\uninstPRONOTE.iss' % basedir)
    shutil.rmtree('C:\ProgramData\IndexEducation','ignore_errors=True')
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

29 août 2022 - 10:28

basedir ne doit pas être utiliser dans uninstall

En faite lorsque le remove/uninstall est executer, le paquet n'est plus présent sur la machine. (il a été supprimer lors de son installation, donc les fichier présent dans le paquet ne sont plus dispo)

Il faut donc copier votre fichier uninstPRONOTE.iss ailleurs sur la machine lors de l'installation pour l'utiliser lors de la désinstallation ou alors créer le fichier lors de l’exécution du def uninstall

Le paquet msoffice fait cela. Vous pouvez regarder le paquet pour exemple il créer le fichier uniquement lors de la désinstall.

https://store.wapt.fr/store/details-tis ... 99489.wapt
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

29 août 2022 - 11:56

ok merci en effet sur le site pronote ils preconisent egalement la copie des fichiers sur le disque en local
maintenant ça marche bien l'installation en copiant sur C: le .iss :

Code : Tout sélectionner

def install():
    shutil.copyfile('installPRONOTE.iss','C:\installPRONOTE.iss')
    run(r'Install_PRNclient_FR_2022.0.2.1_win64.exe -s -f1C:\installPRONOTE.iss')
    import time
    time.sleep(3)
    import os
    os.system('taskkill /f /im "Client PRONOTE.exe"')
    shutil.copyfile('ConfigClientsHttp.xcfg','C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
    shutil.copyfile('Client PRONOTE.xcfg','C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')
pour la désinstallation il faut donc juste enlever le %basedir je présume et copier egalement le fichier .iss sur le disque local. Ca donnerait ça ;

Code : Tout sélectionner

def uninstall():
    shutil.copyfile('uninstPRONOTE.iss','C:\uninstPRONOTE.iss')
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1C:\uninstPRONOTE.iss')
    shutil.rmtree('C:\ProgramData\IndexEducation','ignore_errors=True')
    
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

29 août 2022 - 14:49

basedir peu être utiliser pendant l'installation aucun problème

Juste basedir en uninstall ne donnera pas accès au fichier qu'il ya a dans le paquet

Code : Tout sélectionner

import time
uninstallkey = []

def install():
   run(r'"Install_PRNclient_FR_2022.0.2.1_win64.exe" -s -f1%s\installPRONOTE.iss' % basedir)
   time.sleep(3)
   killalltasks('Client PRONOTE.exe')
    
   filecopyto('ConfigClientsHttp.xcfg',r'C:\ProgramData\IndexEducation\Commun\ConfigClientsHttp.xcfg')
   filecopyto('Client PRONOTE.xcfg',r'C:\ProgramData\IndexEducation\PRONOTE\CLIENT\VERSION 2022-0\FR\Installations\{EE26865C-1E0D-D13E-3DC3-DC89333D079B}\Client PRONOTE.xcfg')
   filecopyto("uninstPRONOTE.iss",r"c:\uninstPRONOTE.iss")

def uninstall():
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{D1124ED8-514E-40BF-9021-D3B3CA941A53}\setup.exe" -s -uninst -f1rc:\uninstPRONOTE.iss' )
    remove_tree(r'C:\ProgramData\IndexEducation')
adgm11
Messages : 45
Inscription : 12 avr. 2022 - 07:00

29 août 2022 - 16:17

ok tout marche nikel avec ce paquet là merci
seule petite coquille à corriger dans la commande uninstall :
-f1c:\uninstPRONOTE.iss

filecopyto et shutil.copyfile font la même chose? si ce n'est qu'il faut faire un import shutil pour le 2eme
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1783
Inscription : 10 juil. 2014 - 23:52
Contact :

30 août 2022 - 09:41

filecopyto viens directement du setuphelpers de wapt (CTRL CLIQUE sur la fonction dans votre ide pour voir directement le code sous-jacent)

c'est un shutil.copyfile améliorer
Verrouillé