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 ;

Windows Command Line utility launched as Local Administrator

Invite de commande Windows lancée 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é.

PyScripter with TightVNC project opened

PyScripter avec le projet TightVNC ouvert

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.

Test installing the package from you development computer

tester l’installation du paquet sur la machine de développement ;

Paramètre Valeur Description
install Exécuter Lancer l’installation du logiciel avec les paramètres renseignés dans setup.py.
install Débogguer Lancer le debugger ligne par ligne.
remove Exécuter Lancer la désinstallation.
-i build-upload Exécuter Modifier la version du paquet et lance la construction et l’envoi du paquet sur le dépôt.

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:\waptdev     is-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 :

Option "-i build-upload" of PyScripter project

L’option « -i build-upload » du projet PyScripter