Page 1 sur 1

créer paquet pronote

Publié : 03 juil. 2022 - 16:55
par adgm11
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

Re: créer paquet pronote

Publié : 03 juil. 2022 - 18:28
par adgm11
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.

Re: créer paquet pronote

Publié : 04 juil. 2022 - 13:29
par sfonteneau
Bonjour


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

viewtopic.php?p=10396#p10396

Re: créer paquet pronote

Publié : 09 juil. 2022 - 15:36
par adgm11
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

Re: créer paquet pronote

Publié : 26 août 2022 - 15:05
par adgm11
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')

Re: créer paquet pronote

Publié : 29 août 2022 - 10:28
par sfonteneau
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

Re: créer paquet pronote

Publié : 29 août 2022 - 11:56
par adgm11
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')
    

Re: créer paquet pronote

Publié : 29 août 2022 - 14:49
par sfonteneau
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')

Re: créer paquet pronote

Publié : 29 août 2022 - 16:17
par adgm11
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

Re: créer paquet pronote

Publié : 30 août 2022 - 09:41
par sfonteneau
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