Les packages WPKG

Présentation

Les packages WPKG sont les fichiers décrivant l'installation et la désinstallation des applications Windows. Ils sont contenus dans le répertoire wpkg/packages/.

Les packages contiennent, entre autres, la version du logiciel et le chemin vers le programme d'installation.

Exemple

<?xml version="1.0" encoding="UTF-8"?>

<!-- OpenSource -->

<packages>

<package id="7zip"

name="7-Zip"

revision="%version%"

reboot="false"

priority="0">

<variable name="version" value="922" />

<variable name="longversion" value="9.22" />

<variable architecture="x86" name="platf" value="" />

<variable architecture="x64" name="platf" value="-x64" />

<check type="logical" condition="or">

<check type="file" condition="versionequalto" path="%PROGRAMFILES%\7-Zip\7zFM.exe" value="%longversion%.0.0" />

<check type="file" condition="versionequalto" path="%PROGRAMFILES(x86)%\7-Zip\7zFM.exe" value="%longversion%.0.0" />

</check>

<eoledl dl="http://sourceforge.net/projects/sevenzip/files/7-Zip/%longversion%/7z%version%.msi/download" destname="7zip/7z%version%.msi" />

<eoledl dl="http://sourceforge.net/projects/sevenzip/files/7-Zip/%longversion%/7z%version%-x64.msi/download" destname="7zip/7z%version%-x64.msi" />

<install cmd='msiexec /qn /norestart /i "%SOFTWARE%\7zip\7z%version%%platf%.msi"' />

<upgrade cmd='msiexec /qn /norestart /i "%SOFTWARE%\7zip\7z%version%%platf%.msi"' />

<remove cmd='msiexec /qn /x "%SOFTWARE%\7zip\7z%version%%platf%.msi"' />

</package>

</packages>

Complément

Explication sur les balises :

  • id : identifiant WPKG de l'application ;

  • name : nom de l'application à afficher ;

  • revision : nombre entier définissant la version de l'application, il doit être incrémenté pour que WPKG mette l'application à jour ("upgrade") ;

  • check : test(s) pour vérifier la présence d'une application (si elle est déjà installée) ;

  • install : commande(s) à exécuter pour installer l'application ;

  • upgrade/downgrade : commandes pour mettre à jour / rétrograder une application ;

  • remove : commande pour désinstaller une application.

Davantage d'explications sur le site officiel de WPKG : http://wpkg.org/Packages.xml:French

Le projet EOLE wpkg-package propose des packages adaptés à l'environnement EOLE :

http://dev-eole.ac-dijon.fr/projects/wpkg-package/

Il contient des fichiers <package>.xml directement fonctionnels dans un environnement Horus/Scribe, à quelques (exceptions) près, ainsi que des icônes, des scripts et des outils (dans le dossier softwares).

http://dev-eole.ac-dijon.fr/projects/wpkg-package/repository/

Liste des applications supportées :

http://dev-eole.ac-dijon.fr/projects/wpkg-package/repository/revisions/master/show/packages

Téléchargement du projet wpkg-packages

Sous Windows

Le logiciel TortoiseGit permet de récupérer les .xml sur nos dépôts : http://tortoisegit.org/

Une fois installé, récupérer le projet wpkg-packages à l'adresse http://dev-eole.ac-dijon.fr/git/wpkg-package.git

Sous GNU / Linux

La manipulation peut se faire depuis le serveur Scribe/Horus.

Il est nécessaire d'installer Git :

# apt-eole install git-core curl

Pour télécharger l'ensemble des fichiers <packages>.xml du dépôt il faut le cloner :

# cd /root

# git clone https://dev-eole.ac-dijon.fr/git/wpkg-package

Lorsque que le dépôt est déjà cloné il faut le mettre à jour :

# cd /root/wpkg-package

# git pull

Les fichiers <packages>.xml sont à copier dans le dossier d'installation de WPKG, la commande rsync permet de ne copier que les nouveaux paquets :

# cd /root/wpkg-package

# rsync -Cav . /home/wpkg

Certains fichiers <packages>.xml contiennent une balise <eoledl>. Cette balise indique l'URL où télécharger le ou les installeurs de l'application.

Pour télécharger l'ensemble des installeurs :

# cd /home/wpkg/packages/

# ./download_installers.py

Attention

Certains installeurs nécessitent un traitement particulier avant de pouvoir être exécutés automatiquement par WPKG, c'est le cas par exemple du logiciel Java.

Icônes

Le projet wpkg-package contient un dossier nommé icones avec les icônes du Bureau et du Menu démarrer correspondantes aux packages.

Ce dossier contient les icônes pour Windows 32-bits et 64-bits dans des sous-dossiers séparés, les chemins de ces icônes pouvant être différents.

Softwares

Le projet wpkg-package contient un dossier nommé Softwares nécessaire à l'exécution de certains packages. Il faut en copier le contenu dans le dossier wpkg\softwares\ (dossier correspondant à la variable %SOFTWARE%). Ce dossier contient notamment un sous-dossier nommé tools qui rassemble divers outils comme par exemple nircmd, setacl, wget…

Fonctionnement du téléchargements des installeurs

Le fichier .xml contient une ou plusieurs balises <eoledl>.

Exemple

<eoledl dl="http://launchpad.net/ocsinventory-windows-agent/2.0/2.0.3/+download/OCSNG-Windows-Agent-2.0.3.zip" destname="ocsinventory\" unzip='1' />

Remarque

  • dl : lien vers le fichier à télécharger ;

  • destname : nom d'un dossier ou d'un fichier ;

    Dans le cas d'un dossier aucun changement de nom est effectué, le fichier est seulement placé dans le dossier. Dans le cas d'un nom de fichier, le fichier téléchargé est renommé.

    Dans tous les cas, si le dossier n'existe pas il est créé. Pour qu'un nom soit considéré comme un dossier il doit se finir par le caractère / ou \.

  • unzip : indique s'il faut désarchiver le fichier téléchargé.

Contributions

Il est possible de contribuer à la maintenance de ces fichiers et à l'ajout de nouveaux packages. Il faut demander l'ouverture d'un accès sur la forge ou communiquer sur les listes de discussion.

Pour la création d'un nouveau paquet, voici quelques recommandations.

Convention de nommage

Certaines règles sont à respecter lors de la création d'un nouveau package afin de garder un système unifié et pérenne.

Un package est identifiable par les deux balises suivantes :

  • id : identifiant unique de l'application dans WPKG (sensible à la casse) ;

  • name : nom de l'application.

Le champ id est le plus important, il doit respecter les conventions suivantes :

  • sans espace ;

  • tout en minuscules ;

  • sans numéro de version (firefox et non firefox15).

Tests des packages : check

La plupart des installeurs ajoute une entrée Uninstall pour apparaître dans la section Ajout/Suppression de programmes de Windows.

On peut utiliser cette clé pour tester la présence d'une application. Mais une clé de registre ne prouve pas qu'une application est réellement présente. Il faut aussi tester l'existence des fichiers de l'application.

Exemple

<check type="uninstall" condition="exists" path="QT Lite %version%" />

<check type="file" condition="exists" path="%progfiles%\QT Lite\QuickTimePlayer.exe" />

Validation de la syntaxe XML

Il est toujours possible de faire une faute de frappe dans un fichier XML, un validateur XML en ligne permet de vérifier la syntaxe XML du fichier : http://xmlvalidation.com/.