Structure d’un paquet WPKG

Avant de commencer à modifier ou écrire ses paquets, il faut assimiler la structure d’un paquet WPKG.

Prenons l’exemple du paquet « Scratch » (logiciel pour faire apprendre l’algorithmique au collège) :

Scratch1

Généralités : le format XML…

Les paquets sont au format XML, c’est à dire que les informations sont contenues dans des balises encadrées par les signes « < » et « > ».

Scratch2

par exemple la valeur de l’id de ce paquet (balise package) est « Math_Scratch ». Mais la balise a d’autres attributs : name, revision, priority chacun ayant une valeur.

Pour écrire correctement un paquet chaque balise doit être fermée. Par exemple </package>referme la balise <package>. Le symbole « / » signifiant la fermeture de balise.

Scratch3

La balise <package> inclut pas mal de « sous balises » (sous catégories). Mais ce n’est généralement pas le cas. Par exemple la balise « depends » est écrite en une seule ligne.

Scratch4

Ici « /> » à la fin de la ligne indique la fermeture de balise, ce qui permet d’écrire moins. On aurait aussi pu écrire « <depends package-id= »AdobeAir »></depends> » qui aurait été strictement équivalent…

Si vous voulez en savoir plus sur le XML, vous trouverez de nombreuses ressources sur internet mais vous pouvez aussi utiliser les commentaires.

 

Déclaration du paquet : balise <package>

Scratch5

L' »id » du paquet est un identifiant unique, c’est celui qui apparait dans WPKG-MANAGE, c’est cet identifiant qu’il faut utiliser si vous éditer profiles.xml manuellement. Choisissez un nom explicite.

L’attribut « name » est utilisé pour afficher un nom compréhensible par les utilisateurs. C’est ce nom qui est affichée par WPKG-GP au démarrage du poste.

L’attribut « revision » est très important il indique le numéro de version du paquet. Quand vous augmentez la valeur de cet attribut, WPKG détectera qu’une version plus récente est disponible. Il mettra à jour le logiciel (commandes de la balise <upgrade>).

L’attribut « priority » ne sert pas à grand chose… Si deux paquets doivent être installés en même temps, celui qui a une « priority » plus élevée sera installé en premier. Peu utile, si un logiciel a besoin d’un autre logiciel, il vaut mieux utiliser la balise <depends>. Je pense qu’il est possible de ne pas indiquer cette attribut (à vérifier).

 

Les variables : balise <variables>

Scratch8

Cette balise permet de définir des variables repérées ensuite par leur attribut name. Ici la variable PKG_VERSION reçoit la valeur 447 (attribut value).

Cela évite d’avoir à écrire plusieurs fois cette valeur et se révélera très utile au passage en version 448 et plus : il n’y aura que cette ligne à modifier. L’utilisation de variables n’est pas obligatoire mais vous pouvez définir autant de variables que nécessaire.

 

Dépendances : balise <depends>

Scratch6

Ce n’est pas obligatoire dans tous les paquet mais parfois utile : pour fonctionner Scratch a besoin que Adobe Air soit installé.

Si vous indiquez à WPKG d’installer le paquet Math_Scratch sur un ordinateur, il installera automatiquement le paquet ayant l’id « AdobeAir » (paquet comportant <package id= »AdobeAir » ……).

Vous pouvez indiquer autant de dépendances que nécessaire.

 

Vérifications : balise <check>

Scratch7

Ces balises indique des tests permettant à WPKG de déterminer si le logiciel est correctement installé. A noter : pour les besoin de présentation du blog, la balise est écrite sur 2 lignes ce qui est sans importance.

Ces test sont invoqués :

  • à chaque exécution de WPKG, par exemple à chaque démarrage via WPKG-GP
  • après une première installation (<install>)
  • après une mise à jour du logicel (<upgrade> ou <downgrade>)

Dans cet exemple, le type de test « uninstall » demande à WPKG de regarder la liste des programmes installés correspondant au « panneau de configuration/programmes et fonctionnalités ».
Progs3
L’attribut condition= »versiongreaterorequal » demande de vérifier si la valeur de version du panneau de configuration est supérieure ou égale à l’attribut value.

L’attribut path indique le nom de logiciel apparaissant dans le panneau de configuration. Vous pouvez utiliser des expressions régulières…

L’attribut value reçoit ici la valeur correspondant à la variable PKG_VERSION. Notez la présence des symboles « % ».

En clair, la version de scratch est-elle plus récente sur ce poste que PKG_VERSION (c’est à dire 447) ?

On peut également tester la présence d’un fichier, la version d’un fichier, la base de registre… Vous pouvez faire autant de tests que vous le souhaitez et les combiner avec des opérateur logique. (ET / OU / NON)…

 

Première installation du logiciel : balise <install>

Scratch9

Cette balise indique que faire si jamais les tests de la balise <check> échouent. Ce sont les commandes à exécuter pour installer le logiciel.

Ici, l’attribut cmd indique la commande à exécuter. (idem que si vous utilisiez l’invite de commande windows).

« %SOFTWARE% » fait référence à la variable SOFTWARE qui est le répertoire wpkg/softwares. Il n’est pas nécessaire de la définir dans le paquet.

Il peut y avoir autant de balises <install> que nécessaire. Les commandes seront alors éxécutés successivement.

Mise à jour de logiciel : balise <upgrade>

Scratch10

La balise <upgrade> permet  d’indiquer que faire quand l’attribut revision de la balise <package> augmente. C’est à dire que faire en cas de mise à jour.

On peut définir des commandes avec la syntaxe <upgrade cmd= »….. » /> comme pour la balise <install> mais ici on utilise l’attribut include. include= »remove » signifie d’exécuter ce qui correspond au balises <remove>.  Il est ensuite indiqué d’exécuter ce qui correspond aux balises <install>.

Vous pouvez également utiliser des balises <downgrade> qui seront utilisées pour revenir à des version antérieures (<package revision= qui aurait diminué). Ce cas restera cependant extrêmement rare…

A noter : n’ayant jamais fait de mise à jour de ce paquet il est surement possible de retirer la ligne <upgrade include= »remove » />.

 

Supprimer le logiciel : balise <remove>

Scratch11

La balise <remove> indique que faire si un logiciel doit être désinstallé (vos avez décoché la case dans WPKG-MANAGE ou effacé la ligne dans profiles.xml)

Ici la commande (attribut « cmd« ) correspond à la désinstallation de la version 447 de Scratch.

 

Pour finir

C’est tout pour ce court article qui j’espère vous donnera toutes les bases utiles. Il vous faudra maintenant  maîtriser l’utilisation de la balise <check> et savoir que mettre dans les balises <install>, <upgrade> et <remove> (c’est le gros morceau).

Dans un premier temps vous n’allez pas nécessairement écrire des paquets entiers. Commencez par modifier des paquets existants. Inspirez vous des paquets trouvés sur internet (liens fournis sur le blog ou autres…). En vous servant d’exemple et en essayant de comprendre les paquets vous apprendrez rapidement à écrire les votres.

 

Cet article a été posté dans Ecrire ses paquets WPKG. Mettre en favoris Lien permanent.

10 réponses pour Structure d’un paquet WPKG

  1. ledufakademy dire:

    salut, de très bonnes doc !
    Mais je bloque sur les check des paquetages …
    Est ce que cette condition pourrait fonctionner ? (test sur groups cette variable de test fonctionne sous les fichier hosts.xml)

    Le but est de n’installer le paquet que si l’ordinateur fait parti du groupe AD : GRPL-A-WPKG-VLC

    De plus quelle version de wpkg-gp faut-il utiliser en prod. 0.17 ou 18b ?
    Merci d’avance

    • rezo dire:

      Je pense que le mieux est de créer un profil (liste de logiciels) et de l’associer avec les bons hôtes (liste des hôtes avec leurs profils). Un hôte peut cumuler plusieurs profils donc vous pouvez ajouter un profil participer pour les hôtes qui vous intéressent.

      Une autre possibilité est de faire un paquet dans lequel vous faites des check et installer en précisant le paramètre host= dans les balises. Si les postes ont des noms génériques ce sera encore plus facile.

      A ma connaissance pas de possibilité de tester sur le groupe Ad.

  2. ledufakademy dire:

    Mes commentaires ont été un peu … epuré :
    Avec un OU (Or) logique sur ces deux conditions …

  3. ledufakademy dire:

    pas glop les commentaires …. donc check sur les 2 conditions :

    check type= »uninstall » condition= »versionequalto » path= »VLC media player » value= »%version% »
    check type= »host » condition= »groups » value= »GRPL-A-WPKG-VLC » /

  4. ledufakademy dire:

    Re,

    Merci pour cette réponse rapide. (le concept du ckeck me choque toujours , mais c’est ainsi avec WPKG).
    Je vais vous donner ma recette, elle marche très bien et on a plus de 1200 hotes … dont les noms sont des numéros de serie ….
    J’aurai aimait pouvoir filtrer au moment du package … plus logique mais bon …

    host.xml(un seul fichier suffit, j’ai enlever les chevrons car le blog les vire) :
    host groups= »GRPL-A-WPKG-MASTER » profile-id= »GRPL-A-WPKG-MASTER
    host groups= »GRPL-A-WPKG-APPLI_X » profile-id= »GRPL-A-WPKG-APPLI_X

    profiles.xml (un seul fichier)
    profile id= »GRPL-A-WPKG-MASTER »
    package package-id= »firefox-prod
    package package-id= »vlc-prod
    etc …

    profile id= »GRPL-A-WPKG-APPLI_X »
    package package-id= »appli_x

    pour les packages c’est du standard (un fichier .xml par package)

    Ensuite vous pouvez contrôler très facilement, via ajout dans les groupes AD, vos machines ensuite le package est donc gérer par WPKG (install, upgrade , remove etc …), c’est le plus simple sur des gros volumes.

    Je suis preneur d’autre idées aussi …

    Voilà ma chtite contribution.

    • rezo dire:

      Oui. C’est à peu comme cela que nous gérons avec le système scribe. Les hôtes sont dans des groupes de machines scribe et ensuite une configuration logicielle est définie pour le groupe dans les fichier profiles de wpkg. Cependant nos groupes de machine ne sont pas des groupes AD.

      L’utilitaire wpkg_manage nous évite de devoir éditer manuellement les fichiers host et profiles.

    • rezo dire:

      Je pense que vous pouvez essayer quelque chose du type
      host groups= »GRPL-A-WPKG-MASTER » profile-id= »GRPL-A-WPKG-MASTER
      host groups= »GRPL-A-WPKG-APPLI_X »
      profile-id= »GRPL-A-WPKG-MASTER
      profile-id= »GRPL-A-WPKG-APPLI_X

      De mémoire un host peut cumuler les profils.
      Master seraient les logiciels communs
      Appli x le logiciel specifique

  5. adgm dire:

    bonjour
    Malgré plusieurs tentatives mes fichiers .exe ne s’installe pas au demarrage. Seules les fichiers .msi fonctionne avec cmd=msiexec…
    Y a t’il une maniere de rendre operationel l’installation d’un fichier .exe?
    cmd=%software%/program.exe ne donne rien, aucune action ne se lance au démarrage. Même avec un /S ou -silent ou /verysilent….
    Merci

    • rezo dire:

      Pour en savoir plus, il faut consulter le log d’exécution. Situé à la racine de mémoire.

      On peut s’inspirer de wpkg.org. les .exe ne posent aucun problème. Mais suivant l’installateur utilisé le paramètre pour une installation silencieuse n’est pas toujours le même. Déjà, de ce côté, lancer la commande program.exe /S pour vérifier que cela fonctionne.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*