Difference between revisions of "Packages.xml:French"

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search
(Actions)
(Conditions de vérification / Type de conditions)
Line 53: Line 53:
 
== Conditions de vérification / Type de conditions ==
 
== Conditions de vérification / Type de conditions ==
  
Evidemment, il serait inapproprié de lancer l'installation d'un logiciel déjà installé... C'est pourquoi on peut trouver des conditions de vérifications.
+
Evidemment, il serait inapproprié de lancer l'installation d'un logiciel déjà installé... C'est pourquoi existent les conditions de vérifications.
  
 
Il existe 3 catégories de conditions de vérifications:
 
Il existe 3 catégories de conditions de vérifications:

Revision as of 16:35, 26 June 2007

packages.xml est un fichier qui définit comment installer et désinstaller des paquets logiciels. En d'autres mots, c'est une liste de tous les paquets et scripts pouvant être déployés ou exécuter sur les stations de travail.

Ce fichier doit être placé dans le même répertoire que wpkg.js.

WPKG ne fonctionnera pas sans ce fichier.


Structure de packages.xml

La structure de packages.xml ressemble à :

<packages>
<package
id="wpkg1"
name="Windows Packager exemple 1"
revision="1"
reboot="false"
priority="0">
<check type="registry" condition="exists" path="HKLM\Software\wpkg\full\key\not\part\of\it" />
<check type="file" condition="exists" path="%PROGRAMFILES%\wpkg\wpkg.bat" />
<check type="uninstall" condition="exists" path="WPKG" />

<install cmd='msiexec /i (chemin du paquet msi)'>
<exit code="0" />
</install>

<remove  cmd='%PROGRAMFILES%\uninstall\uninst.exe -quiet' />

<upgrade cmd='msiexec /i (chemin du paquet msi)' />

</package>

</packages>


Chaque paquet a les attributs suivants :

  • id - Un identificateur unique représentant le paquet. Doit être court et pertinent.
  • name - La version longue. Le nom complet du produit.
  • revision - Un entier défini par l'utilisateur représentant la "version" du paquet. Doit être incrémenté à chaque nouvelle release.
  • reboot - Si égal à "true", le système redémarre à la fin de l'installation, de la desinstallation, de la mise à jour du paquet.
  • priority - Valeur numérique spécifiant l'ordre d'installation. Plus le nombre est grand, plus la priorité est grande, plus tôt le paquet sera installé par rapport à d'autre dont la priorité est moins importante. Exemple:
    • 5 - Installe ces paquets en premier.
    • 2 - Installe ces paquets deuxième.
    • 0 - Installe ces paquets en troisième.

Conditions de vérification / Type de conditions

Evidemment, il serait inapproprié de lancer l'installation d'un logiciel déjà installé... C'est pourquoi existent les conditions de vérifications.

Il existe 3 catégories de conditions de vérifications:

  • Registre - Teste les conditions par rapport au registre
  • Fichier - Teste les conditions par rapport aux fichiers
  • Désinstallation / Uninstall - Teste les conditions par rapport aux logiciels apparaissant dans Ajout/Suppression de programmes

Registre

Les tests sur le registre permettent de vérifier l'exsitence ou la valeur d'une clé spécifique. Il y a deux type de conditions appliquables au registre système: exists et equals

exists - Vérifie l'existence d'une clé de registre. Si la clé de registre est trouvée, la condition retourne vrai, sinon elle retourne faux.

equals - Vérifie la valeur d'une clé de registre. Si la clé de registre est trouvée et que la valeur correspond, la condition retourne vrai, sinon elle retourne faux.

Exemples:

Cet exemple teste la présence d' Acrobat Reader dans le registre système:

<check type="registry" condition="exists" path="HKLM\Software\Adobe\Adobe Reader\7.0" />

Cet exemple vérifie que Firefox en Anglais US et en version 1.5.0.6 est installé:

<check type="registry" condition="equals" path="HKLM\Software\Mozilla\Mozilla Firefox\CurrentVersion" value="1.5.0.6 (en-US)" />

Fichier

Les vérifications sur les fichiers permettent de tester l'existence, la taille ou la version d'un fichier. Voici les possibilités:

exists - Vérifie l'exsitence d'un fichier. Si le fichier est trouvé, la condition retourne vrai.

sizeequals - Vérifie la taille d'un fichier. Si le fichier est trouvé et que la taille est conforme à celle attendue, la condition retourne vrai.

versionsmallerthan - Vérifie la version d'un fichier. Si le fichier est trouvé et que la version est plus petite que celle attendue, la condition retourne vrai.

versionlessorequal - Vérifie la version d'un fichier. Si le fichier est trouvé et que la version est plus petite ou égale que celle attendue, la condition retourne vrai.

versionequalto - Vérifie la version d'un fichier. Si le fichier est trouvé et que la version est égale à celle attendue, la condition retourne vrai.

versiongreaterorequal - Vérifie la version d'un fichier. Si le fichier est trouvé et que la version est plus grande ou égale que celle attendue, la condition retourne vrai.

versiongreaterthan - Vérifie la version d'un fichier. Si le fichier est trouvé et que la version est plus grande que celle attendue, la condition retourne vrai.

Exemples:

Cet exemple vérifie l'existence d'Adobe Reader dans le système de fichiers:

<check type="file" condition="exists" path="%PROGRAMFILES%\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" />

Cet exemple vérifie que Firefox Anglais US en version 1.6.0.6 est installé ( test basé sur la taille du fichier firefox.exe )

<check type="file" condition="sizeequals" path="%PROGRAMFILES%\Mozilla Firefox\firefox.exe" value="7183469" />

Cet exemple vérifie que la version du fichier firefox.exe actuellement installé est inférieure à 1.5.0.6:

<check type="file" condition="versionsmallerthan" path="%PROGRAMFILES%\Mozilla Firefox\firefox.exe" value="1.5.0.6" />


Désinstallation / Uninstall

Les tests de type uninstall permettent vérifier la présence de clé de registre spécifiques aux logiciels installés (ceux que l'on voit dans Ajout/suppression de programmes). Microsoft maintient cette liste de logiciels désinstallables dans: HKLM\Software\Microsoft\Windows\Current Version\Uninstall. Le test effectue une comparaison avec la valeur DisplayName de chaque clé présente dans ce chemin.

L'unique condition disponible est exists.

exists - Vérifie l'existence d'un logiciel dans la liste des logiciels installés du registre système. Si le logiciel est trouvé, la condition retourne vrai.

Exemples:

Cet exemple vérifie l'existence d'Adobe Reader dans la liste des logiciels installés du registre système:

<check type="uninstall" condition="exists" path="Adobe Reader 7.0" />

Cet exemple vérifie que Firefox 1.6.0.6 est installé dans la liste des logiciels installés du registre système:

<check type="uninstall" condition="exists" path="Mozilla Firefox (1.5.0.6)" />


Conditions Logiques

Il est possible de vérifier entre 0 et x conditions. Si aucune condition n'est donné, WPKG essaiera toujours d'installer le logiciel, qu'il soit déjà installé ou non.

Pour faciliter l'utilisation de plusieurs conditions, il y a un quatrième type de condition qui peut êre rajouté, appelé condition logique.

Les conditions logiques permettent de créer des conditions multiples de vérification de l'installation d'un logiciel.

Les conditions logiques sont des conditions de haut-niveau, tandis que les conditions de vérifications réelles sont des sous-branches dans le fichier XML.

Les conditions logiques suivantes sont disponibles: not, and, or, atleast, and atmost.

Exemples:

Disons que, pour l'exemple, vous voulez installer un paquet Adobe Reader 7.0.8 seulement sur les machines tournant sous Windows XP SP2 pour cause d'incompatibilité étrange... Disons aussi que certaines machines ne peuvent être upgradés à SP2 qu'à la condition de passer de 256Mo à 512Mo de mémoire RAM.

Pour ce genre de scénario, vous pourriez utiliser des profils multiples: un profil pour les machines SP1 et un autre pour les machines SP2. Cependant, pour l'exemple, disons que toutes les machines sont dans le même profil. On peut alors créer une condition logique qui nous permettent de valider notre scénario.

<check type="logical" condition="or">
   <check type="registry" condition="exists" path="HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\7.0\Installer\Updates\708" />
   <check type="registry" condition="equals" path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion" value="Service Pack 1" />
</check>

La deuxième condition peut paraître peu intuitive, mais rappelez-vous que quand vous écrivez des conditions, vous recherchez souvent l'absence de choses que leurs présences.

Ce que dit la condition est que "Est-ce qu' Adobe Reader 7.0.8 est installé OU le SP2 est installé ?" Si au moins une des conditions est validé l'installation est sauté.

Quand toutes les conditions ont été testés et que le résultat final est faux, WPKG essaiera d'exécuter les commandes "install cmd".

Après l'exécution, WPKG vérifiera le code retour de sortie (normalement 0 dans l'exemple) *ET* revérifiera les conditions.

Si *une seule* condition n'est pas vérifié, le logiciel est considéré comme *non* installé, prenez garde lors de la rédaction de ces dernières !

Il n'est pas nécessaire d'utiliser systématiquement les trois types de conditions. Souvent, une suffit: Si le logiciel que vous souhaitez installer apparaît dans Ajout/Suppression de programmes (tous ne le font pas), il est suffisant d'utiliser le test "uninstall".

Actions

Wpkg comprend trois actions :install, upgrade et remove. De multiples commandes pour chacune de ces actions peuvent être listées dans le fichier de config et wpkg les éxecutera dans l'ordre dans lequel elles sont listées.

Les commandes install sont exécutées quand un nouveau paquet est détecté dans un profil. Les commandes upgrade sont exécutées quand une nouvelle révision est détectée. Les commandes remove sont exécutées quand un paquet est enlevé d'un profil.

Dans beaucoup d'exemples de la section Category:Silent_Installers, cmd.exe est éxecuté pour réaliser l'expansion des variables d'environnement et pour utiliser 'start /wait' pour attendre que la commande soit exécutée. Cette méthode d'exécution de commande a pour résultat l'apparition sur l'écran de la fenêtre cmd. Pourtant, cette méthode ne semble pas nécessaire. La version actuelle de wpkg (0.9.10) exécute les commandes avec la fonction WScript.Shell.Exec(), qui devrait faire l'expansion des variables d'environnement. Ce n'est pas explicitement mentionné dans la documentation du SDK Microsoft, mais cela semble être le cas. Wpkg attend jusqu'à la fin de la commande puis continue.

La méthode correcte pour exécuter une commande de l'interpréteur est d'utiliser la variable d'environnement %comspec%, et non de spécifier explicitement cmd.exe. C'est nécessaire pour exécuter des commandes intégrées à l'interpréteur (par exemple copy) et qui ne sont pas des exécutables à part (xcopy).

When the ouput of a command (think of: copy,cacls) is too much, the command will fail. You have to redirect the output to NUL or a file (example: "%command% >nul").

Typical examples:

<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" />
<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" timeout="1800" />
<install cmd="%comspec% /c copy %SOFTWARE%/file.dll %WINDIR%" />
<remove cmd="msiexec /qn /x %SOFTWARE%/package.msi" />

The timeout option tells wpkg how long to wait for the command to complete. It is in seconds and the default is 3600 seconds.

You can set reboot to "true" with the following:

<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" >
    <exit code="3010" reboot="true" />
    <exit code="0" />
</install>

Quick examples

Other example - WPKG checks if the package is installed only in Windows' Add/Remove Programs before deciding to install it (to make sure it is not installed already):

<package
id="wpkg3"
name="Windows Packager sample 3"
revision="1"
reboot="false"
priority="1">

<!--
This is a comment.
Checks in Windows' Add/Remove Programs only.
-->
<check type="uninstall" condition="exists" path="WPKG" />

<install cmd='%PACKAGES%\package.exe /quiet /install' />

<remove  cmd='%PACKAGES%\package.exe /quiet /uninstall' />

<upgrade cmd='%PACKAGES%\package.exe /quiet /install' />

</package>


In the example below, there are no check conditions. This means that WPKG will execute it each time - so this is rather useful for executing scripts that need to be run each time the machine is booted, than installing software:

<package
id="backupfiles"
name="Makes backup of some file"
revision="1"
reboot="false"
priority="0">

<!--
This is a comment.
'''No check conditions; script will be executed *each time* wpkg.js is called - each time PC is booted.'''
-->

<install cmd='\\server\path\script.bat' />
</package>


Similar example, without any conditions, either. Note the execute="once" entry - this means that that script will be executed only once. It is useful for the tasks you want to do one time only, like disk defragmenting, some testing, changing printers etc.

<package
id="backupfiles"
name="Makes backup of some file"
revision="1"
reboot="false"
execute="once"
priority="0">

<install cmd='\\server\path\script.bat' />
</package>

Similarly, you may want to execute a program or script each time - use "always" instead of "once". For more info on this functionality, check here.

Dépendances de paquets

Les paquets peuvent aussi dépendre d'autres paquets, voir package dependecies pour plus d'info.

Définir des fichiers XML individuels pour les paquets

Vous pouvez, si vous le souhaitez, séparer les définitions de vos paquets dans des fichiers individuels. Créez un répertoire packages dans le même emplacement que le fichier wpkg.js. Dans ce répertoire, vous pouvez créer des fichiers XML individuels (ex: thunderbird.xml, firefox.xml, etc...). La syntaxe reste la même que dans le fichier packages.xml.

A noter que si vous préferez les fichiers XML individuels de définition de vos paquets, vous devez tout de même garder un fichier packages.xml. Ce fichier doit contenir au moins le code suivant:

<packages>
</packages>

Voir aussi