Packager des paquets .exe simples¶
Note
Variation par rapport aux MSI
WAPT préfère les MSI car les installeurs .exe
ne sont pas standardisés et leurs arguments silencieux peuvent être différents d’un logiciel à un autre.
Indication
Depuis la version 1.3.12 de WAPT, une nouvelle méthode de création rapide de paquets depuis la console WAPT est devenue disponible.
Cette documentation est toujours d’actualité, nous vous conseillons cependant d’utiliser l’interface graphique pour instancier vos modèles de paquets. voir : Créer un paquet WAPT depuis la console.
obtenir l’installeur exe depuis une source sûre ;
Télécharger l’installeur au format *.exe (par exemple Firefox ESR x64) :
rechercher la documentation associée pour les flags silencieux ;
Sur le site de la Fondation Mozilla ;
autres méthodes pour récupérer le flag silencieux :
dépôt de paquets WPKG ;
dépôt de paquets Chocolatey ;
recherche Internet avec le terme « Firefox silent install » ;
Créer un template de base de paquet à partir du fichier .exe¶
lancer une invite de commande (cmd.exe) en mode Administrateur Local ;
créer un projet de paquet logiciel ;
wapt-get make-template <chemin_exe> <nom_du_paquet>
Exemple avec Mozilla Firefox ESR :
wapt-get make-template "Firefox Setup 52.6.0esr.exe" "tis-firefox-esr" Template created. You can build the WAPT package by launching C:\Program Files (x86)\wapt\wapt-get.exe build-package C:\waptdev\tis-firefox-esr-wapt You can build and upload the WAPT package by launching C:\Program Files (x86)\wapt\wapt-get.exe build-upload C:\waptdev\tis-firefox-esr-wapt
PyScripter s’ouvre ensuite avec le projet du paquet .exe.
vérifier le fichier
control
;Mozilla Firefox-ESR ne répond pas aux standards et retourne un numéro de version erroné (il s’agit du numéro de version du logiciel qui créé l’installeur).
Fichier control d’origine
package : tis-firefox-esr version : 4.42.0.0-0 architecture : all section : base priority : optional maintainer : user description : automatic package for firefox setup 52.6.0esr
Fichier control modifié
package : tis-firefox-esr version : 52.6.0-1 architecture : all section : base priority : optional maintainer : Tranquil-IT Systems description : Mozilla Firefox 52.6.0 ESR
Note
Une sous-version -1 a été ajoutée. C’est la version de packaging du paquet WAPT.
Cela permet de ne pas modifier la version réelle du logiciel quand on pousse par exemple une nouvelle configuration du même logiciel sur le parc.
vérifier le fichier
setup.py
;WAPT a mis un flag silencieux générique /VERYSILENT qui ne fonctionne peut-être pas avec Mozilla Firefox ESR.
Dans ce cas il convient d’indiquer le bon flag silencieux que nous avons recherché précédemment.
changer le code du fichier
setup.py
en conséquence ;:emphasize-lines: 8 # -*- coding: utf-8 -*- from setuphelpers import * uninstallkey = [] def install(): print('installing tis-firefox-esr') run(r'"Firefox Setup 52.6.0esr.exe" -ms')
enregistrer le paquet ;
Gérer la désinstallation¶
Avec un exe, la clé de désinstallation n’est pas disponible sans avoir installé le logiciel une première fois.
Cette clé est disponible dans la base de registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
or on 64bits systems
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
ouvrir une invite de commande Windows ;
récupérer la clé de désinstallation avec
wapt-get list-registry firefox
UninstallKey Software Version Uninstallstring
------------------------------------- -------------------------------------- ------------------ ------------------------------------------------------
Mozilla Firefox 52.6.0 ESR (x64 fr) Mozilla Firefox 52.6.0 ESR (x64 fr) 52.6.0 "C:\Program Files\Mozilla Firefox\uninstall\helper.exe"
copier la clé de désinstallation UninstallKey : Mozilla Firefox 52.6.0 ESR (x64 fr) ;
modifier en conséquence le script setup.py avec la clé de désintallation correcte ;
:emphasize-lines: 4
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = ['Mozilla Firefox 52.6.0 ESR (x64 fr)']
def install():
print('installing tis-firefox-esr')
run(r'"Firefox Setup 52.6.0esr.exe" -ms')
Note
La clé de désinstallation doit être exactement la même que celle listée avec la commande list-registry. La clé de désinstallation peut être un GUID tel que 9516000000-0052-040C-0000-0000000FF1CE, un GUID avec des caractères entre crochets, {95160000-0052-040C-0000-0000000FF1CE}, ou simplement une chaîne de caractères comme Git_is1 ou Mozilla Firefox 52.6.0 ESR (x64fr).
relancer l’installation du paquet afin que la clé de désinstallation soit prise en compte dans la base de données locale WAPT ;
tester la désinstallation du paquet ;
lancer un remove du paquet depuis le panneau Run Configurations de PyScripter ;
À l’issue de la désinstallation, le programme est désinstallé
On pourra vérifier l’absence de clé de registre de désinstallation en relançant la commande wapt-get list-registry.
UninstallKey Software Version Uninstallstring --------------------- ----------------- ------------------ --------------- --------------------- ----------------- ------------------ ---------------
Cas particulier d’un désinstalleur non-silencieux¶
Il arrive dans certains cas que le programme s’installe silencieusement mais que le désinstalleur ne s’exécute pas silencieusement.
Dans ce cas précis on va surcharger la fonction uninstall().
Exemple avec Mozilla Firefox si cela était nécessaire :
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = ['Mozilla Firefox 52.6.0 ESR (x64 fr)']
def install():
print('installing tis-firefox-esr')
run(r'"Firefox Setup 52.6.0esr.exe" -ms')
def uninstall():
print('uninstalling tis-firefox-esr')
run(r'"C:\Program Files\Mozilla Firefox\uninstall\helper.exe" -ms')
Indication
Dans la fonction uninstall(), on ne peut pas appeler des fichiers contenus dans le paquet WAPT. Pour les appeler, il faudra avoir copié les fichiers dans un répertoire local de la machine lors de l’installation du paquet.
Construire et charger le paquet WAPT¶
Une fois l’installation et la désinstallation configurées et testées vous pouvez effectuer un build-upload pour charger votre nouveau paquet WAPT sur votre dépôt.