Packager des paquets .msi simples¶
Indication
Pré-requis
Pour la création de paquet il faut d’abord avoir installé l’environment de développement WAPT ;
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.
Télécharger l’installeur MSI de TighVNC
rechercher la documentation associée pour les flags silencieux ;
msiexec /i tightvnc-2.7.1-setup-64bit.msi /quiet /norestart
Cette commande devrait installer TightVNC avec les paramètres par défaut. Cependant, MSI vous permet de personnaliser son installation grâce aux propriétés de MSI. La syntaxe générale est :
msiexec /i tightvnc-2.7.1-setup-64bit.msi /quiet /norestart PROPERTY1=value1 PROPERTY2=value2 PROPERTY3=value3
lancer une invite de commande Windows cmd.exe en tant qu”Administrateur Local ;
instancier le paquet à partir du modèle prévu pour un installeur MSI ;
wapt-get make-template c:\download\file.msi <yourprefix>-tightvnc
Exemple avec TightVNC :
wapt-get make-template C:\Users\User\Downloads\tightvnc-2.8.5-gpl-setup-64bit.msi tis-tightvnc
Template created. You can build the WAPT package by launching
C:\Program Files (x86)\wapt\wapt-get.exe build-package C:\waptdev\tis-tightvnc-wapt
You can build and upload the WAPT package by launching
C:\Program Files (x86)\wapt\wapt-get.exe build-upload C:\waptdev\tis-tightvnc-wapt
Personnaliser le paquet WAPT¶
PyScripter s’ouvre alors avec le projet TightVNC prêt à être davantage personnalisé.
Note
La procédure de création automatique de ce modèle de paquet :
il crée le dossier du paquet dans
C:\waptdev
;il copie le fichier MSI dans ce dossier ;
il crée le fichier
setup.py
générique ;il crée le fichier
control
qui identifie le paquet ;il crée le fichier
wapt.psproj
générique contenant des fonctions d’exécution WAPT pré-paramétrées ;
Indication
On pourra ensuite :
contrôler et compléter les informations du fichier control ;
ajouter des fichiers supplémentaires (version x86 du MSI, fichiers de configuration, etc) ;
personnaliser la procédure d’installation dans
setup.py
;modifier le fichier
control
si nécessaire, voir : Le fichier control ;
package : tis-tightvnc
version : 2.7.0-1
architecture : all
section : base
priority : optional
maintainer : Tranquil-IT Systems
description : package for TightVNC
depends :
conflicts :
sources :
Note
À noter qu’une sous version (-1 ; tiret + chiffre un) a été ajoutée. C’est la version du paquet WAPT.
Cela permet de ne pas modifier la version réelle du logiciel quand on pousse une nouvelle installation sur le parc.
vérifier le fichier setup.py ;
Dans le fichier setup.py
il faudra vérifier que la clé de désinstallation et les paramètres silencieux sont corrects pour le MSI.
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = ["{8B9896FC-B4F2-44CD-8B6E-78A0B1851B59}"]
def install():
print('installing tis-tightvnc')
run(r'"tightvnc-2.8.5-gpl-setup-64bit.msi" /q /norestart')
Note
Depuis la version 1.3.12 install_msi_if_needed est la fonction utilisée par défaut lors de la création d’un modèle de paquet pour un MSI.
Dans cet exemple nous utilisons la fonction run pour montrer l’évolution du paquet. La fonction install_msi_if_needed est expliquée dans la partie paquet msi evolué de la documentation.
tester l’installation du paquet sur votre machine de développement ;
L’intérêt de l’environment de développement intégré PyScripter est de pouvoir tester en local les paquets WAPT rapidement et de manière itérative.
Paramètre |
Valeur |
Description |
---|---|---|
install |
Exécuter |
Lancer l’installation du logiciel avec les paramètres renseignés dans |
install |
Débogguer |
Lancer le debugger ligne par ligne. |
remove |
Exécuter |
Lancer la désinstallation. |
-i build-upload |
Exécuter |
Augmente le numéro de version du paquet WAPT, construit le paquet et le télécharge sur le dépôt WAPT. |
Construire et charger le paquet WAPT¶
Une fois le projet de paquet créé, on peut lancer la construction du paquet sans modification depuis l’invite de commande Windows.
wapt-get build-upload -i c:\waptdev\tis-tightvnc-wapt
Note
Lorsqu’on exécute cette commande, WAPT :
génère le fichier
manifest.sha256
avec la liste des fichiers contenus dans le paquet ;il zippe le répertoire
C:waptdevtis-tightvnc-wapt
avec un nom canonique pour les paquets WAPT ;ajoute la signature (nécessite la présence de la clé privée) ;
charge le fichier WAPT en https vers le dépôt WAPT ;
regénère le fichier d’index
https://srvwapt.mydomain.lan/wapt/Packages
pour prendre en compte le nouveau paquet ou la nouvelle version du paquet ;
Le paquet est prêt à être déployé.
Exemple :
wapt-get -i build-upload C:\waptdev\tis-tightvnc-wapt
Building C:\waptdev\tis-tightvnc-wapt
Package tis-tightvnc (=2.8.5.0-1) content:
setup.py
tightvnc-2.8.5-gpl-setup-64bit.msi
WAPT\control
WAPT\wapt.psproj
...done. Package filename C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt
Signing C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt
7-Zip [64] 16.04: Copyright (c) 1999-2016 Igor Pavlov: 2016-10-04
Open archive: C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt
--
Path = C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt
Type = zip
Physical Size = 1756458
Updating archive: C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt
Items to compress: 0
Files read from disk: 0
Archive size: 1755509 bytes (1715 KiB)
Everything is Ok
Package C:\waptdev\tis-tightvnc_2.8.5.0-1_all.wapt signed: signature:
FVn2yx77TwUHaDauSPHxJZiPAyMQe4PqLF5n6wY9YPAwY4ijHe6NgDFrexXf8ZYbHAiNa5b8V/Qj
wTVHiqpbXnZotiVIGrJDhgbaLwZ9CK6pfWiflC4126nx6PMF3T1i6w0R0NOE2wJpOSRYESk7lDUz
9CPfzJCLcOXwh0F5eZc96wbkDkSbpn1f+x5tOlvyy/FW2m8RbZQhJcO21j9gGX7It0QNecaOxXgz
qkZZKBDNASOBYAF22M1+zHb59DWQ63Q8yMj5t5szEUTkGtQNG6vZz3gb9Yraq361BIGaBDYUM31j
ZgpaHvP0vdK3c1x1mhyhC7q6eZ/UCW5tETTCiA==
Uploading files...
WAPT Server user :admin
WAPT Server password:
Status: OK, tis-tightvnc_2.8.5.0-1_all.wapt uploaded, 1 packages analysed
On peut aussi faire un build-upload directement depuis le panneau Run Configurations du projet dans PyScripter :