Contactez nous

[RESOLU] Création de paquet Edt / Pronote

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum

* Questions can be asked in English or in French. If the thread is started in English, stick to English, if it is started in French, stick to French.
* Vous pouvez poser vos questions en Français ou en Anglais. Si un sujet est commencé en français, merci de répondre en français. Si un sujet est commencé en anglais, merci de répondre en anglais.
* Please prefix of the title of the thread to [SOLVED] if it is solved.
* Merci de préfixer le titre du thread par [RESOLU] si il est résolu.

Bonjour,

J'essaye en vain de créer un paquet d'installation pour le logicel edt et/ou pronote.
Ces logiciels utilisent l'installeur installshield, il faut donc pour faire une installation silencieuse générer un fichier de réponse iss. Cela fonctionne très bien avec un script batch.

Par contre une fois le paquet générer dans wapt, l'installation s’interrompt ne trouvant pas le fichier de réponse iss.

D'après mes tests, je suis obligé de spécifier le chemin absolu de mon fichier de réponse.
Une fois paquétisé, j'avoue ne pas savoir quel chemin absolu indiquer correspondant à mon fichier de réponse se trouvant dans le paquet...

Je suis preneur de toutes suggestions.

Merci
Bonjour

La variable basedir permet d'utiliser le chemin absolut

run(r'"toto.exe" %s\setup.iss' % basedir )
Super merci pour la réponse ! Mais où se trouvent les fichiers pendant l'installation du paquet ?
Je vois bien le paquet copier dans le dossier c:\wapt\cache, mais il doit bien être décompressé quelque part, non ? Du coup quelle est la valeur de la variable basedir au moment du déploiement ?

Merci
Le paquet est dézippé dans ke répertoire temporaire du système.
Pour voir la valeur...

Code : Tout sélectionner

def install(): 
    print(basedir)
Excellent ! J'ai pu réaliser mon paquet :)

Pour info la commande exacte pour l'installation silencieuse d'edt :

Code : Tout sélectionner

run(r'"Install_EDTclient.exe" -s -f1%s\Setup.iss' % basedir)
Merci à vous
Version finale avec création du raccourci personnalisé pour se connecter au serveur :

edt :

Code : Tout sélectionner

def install():
  print"installing EDT2016"
  run(r'"Install_EDTclient.exe" -s -f1%s\Setup.iss' % basedir)
  create_desktop_shortcut(r'EDT - Lycée',target=u'C:\Program Files (x86)\Index Education\EDT 2016\Réseau\Client EDT.exe',arguments=r'-Adresse "dns_du_serveur" -PortTcp "49300"')
pronote :

Code : Tout sélectionner

def install():
  print"installing Pronote2016"
  run(r'"Install_PRNclient.exe" -s -f1%s\Setup.iss' % basedir)
  create_desktop_shortcut(r'PRONOTE - Lycée',target=u'C:\Program Files (x86)\Index Education\Pronote 2016\Réseau\Client PRONOTE.exe',arguments=r'-Adresse "dns_du_serveur" -PortTcp "49300"')
Bonjour,

Je reviens vers vous avec la réalisation des nouveaux paquets (version edt et pronote 2017). Je souhaiterais aller plus loin qu'avec les paquets précédents en utilisant la fonction install_exe_if_needed à la place d'un simple "run".

L'installation se déroule correctement mais je bute sur la désinstallation des paquets, voici mon code :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    print('installing wapt-pronote2017')
    install_exe_if_needed("Install_PRNclient_FR_2017.0.1.2_win64.exe",silentflags='-s -f1%s\Setup.iss' % basedir,key='{82A4C6B8-0E8E-428E-8566-5045C833AA6B}',min_version='0.1.1.0',killbefore='Client PRONOTE.exe')
    uninstallkey.remove('{82A4C6B8-0E8E-428E-8566-5045C833AA6B}')
    filecopyto('Uninstall.iss','C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}')

def uninstall():
    print('uninstalling wapt-pronote2017')
    run(r'"C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}\setup.exe" -runfromtemp -l0x040c  -uninst -removeonly -s -f1%s\Uninstall.iss' % basedir)
La commande "filecopyto" ne fonctionne pas, le fichier "Uninstall.iss" contenu dans le paquet doit être accessible au moment de la désinstallation, je pensais donc le copier dans le dossier de l'installeur afin de pouvoir l'utiliser dans la commande de désinstallation...

La commande de désinstallation exécuter en local avec un chemin absolu vers le fichier Uninstall.iss fonctionne correctement !
J'en déduis qu'il ne manque plus qu'à placer le fichier Uninstall.iss correctement et de l'appeler avec la bonne syntaxe (j'ai un doute sur l'utilisation de la variable basedir sur ce coup là).

Merci
Attention!

Vous n'avez pas passée le r devant la chaine

Code : Tout sélectionner

"'C:\Program Files (x86)\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}"
Du coup python voie la chaine comme ceci:

Code : Tout sélectionner

"'C:Program Files (x86)InstallShield Installation Information{82A4C6B8-0E8E-428E-8566-5045C833AA6B}"
;)

Le mieux mieux dans l'histoire c'est de générer le fichier a la volé dans temp le fichier et égllament d'appeler la variable programefiles

Code : Tout sélectionner

def uninstall():
    import tempfile
    pathuninstallfile = makepath(tempfile.gettempdir(),'Uninstall.iss')
    data = ur"""gretyreyh
yhrthrthrt
h
trhrthrthrt
htrhrthrthrt"""
    fichier = open(pathuninstallfile, "w")
    fichier.write(data)
    fichier.close()
    run(r'"%s\InstallShield Installation Information\{82A4C6B8-0E8E-428E-8566-5045C833AA6B}\setup.exe" -runfromtemp -l0x040c  -uninst -removeonly -s -f1%s' % (programfiles32,pathuninstallfile))
    remove_file(pathuninstallfile)
    
Merci !

Je viens de modifier mon paquet, tout semble bien fonctionner (pas d'erreur) mais le logiciel ne se désinstalle pas.
Pourtant le fichier est bien créé dans le dossier temp de l'utilisateur, son contenu est ok (fichier testé manuellement), la commande de désinstallation est la bonne (pas de soucis avec les variables).

N'ayant aucune erreur en retour, je ne vois pas trop où chercher, une idée ?
Comment avez vous testée ?

Vous avez testez en exécutant uninstall() dans pyscripter ??