Difference between revisions of "Packages.xml:French"

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search
(Structure de packages.xml)
m (File: traduction)
 
(38 intermediate revisions by 12 users not shown)
Line 46: Line 46:
 
* '''reboot''' - Si égal à "true", le système redémarre à la fin de l'installation, de la desinstallation, de la mise à jour du paquet.
 
* '''reboot''' - Si égal à "true", le système redémarre à la fin de l'installation, de la desinstallation, de la mise à jour du paquet.
  
* '''priority''' - Specifies a numeric value that determines in what order a package will be installed. The higher the number, the higher the priority, and so the earlier the package will be installed compared with lower priority packages. For example:
+
* '''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:
** 2 - installs these packages 1st
+
** 5 - Installe ces paquets en premier.
** 1 - installs these packages 2nd
+
** 2 - Installe ces paquets deuxième.
** 0 - installs these packages  3rd
+
** 0 - Installe ces paquets en troisième.
Note that a package installer with priority '5' would install before all these.
+
  
== Check conditions / check type ==
+
== 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.
  
Of course it would be unwise to launch the installer if the software is already installed. That's why there are "check conditions".
+
Il existe 3 catégories de conditions de vérifications:
 
+
Check conditions are broken down into 3 categories:
+
 
+
  
 
<ul>
 
<ul>
<li>'''Registry''' - Checks the registry for conditions
+
<li>'''Registre''' - Teste les conditions par rapport au registre
<li>'''File''' - Verifies various information about files within the filesystem
+
<li>'''Fichier''' - Teste les conditions par rapport aux fichiers
<li>'''Uninstall''' - Checks the software installation registry key (as displayed in Windows' Add/Remove Programs section) for the existence of an existing package
+
<li>'''Uninstall''' - Teste les conditions par rapport aux logiciels apparaissant dans Ajout/Suppression de programmes
 
</ul>
 
</ul>
  
 +
===Registry===
  
'''Registry'''
+
Les tests sur le registre permettent de vérifier l'existence ou la valeur d'une clé spécifique. Il y a deux type de conditions appliquables au registre système: ''exists'' et ''equals''
 
+
Registry checks allow you to check for the existence of or a specific value in a registry key.  There are two possible conditions available for registry checks: ''exists'' and ''equals''.
+
  
 
<div style="margin-left: 30px">
 
<div style="margin-left: 30px">
'''exists''' - This checks for the existence of a registry key. If the registry key is found, the condition returns true, otherwise it returns false.
+
'''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''' - This checks a specific value of a registry key. If the registry value is found and that value is equal to the supplied value, the condition returns true, otherwise it returns false.
+
'''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.
 
</div>
 
</div>
  
Examples:
+
Exemples:
  
This checks for the existence of Adobe Reader within the registry:
+
Cet exemple teste la présence d' Acrobat Reader dans le registre système:
  
 
<pre>
 
<pre>
Line 85: Line 81:
 
</pre>
 
</pre>
  
This checks to see if Firefox, US English, version 1.5.0.6, is installed:
+
Cet exemple vérifie que Firefox en Anglais US et en version 1.5.0.6 est installé:
  
 
<pre>
 
<pre>
Line 91: Line 87:
 
</pre>
 
</pre>
  
 +
===File===
  
'''File'''
+
Les vérifications sur les fichiers permettent de tester l'existence, la taille ou la version d'un fichier. Voici les possibilités:
 
+
File checks allow you to check for the existence of a file, check for a particular file's size, or examine version information about a file. There are several possible conditions available for file checks:
+
  
 
<div style="margin-left: 30px">
 
<div style="margin-left: 30px">
'''exists''' - This checks for the existence of a file. If the file is found, the condition returns true.
+
'''exists''' - Vérifie l'exsitence d'un fichier. Si le fichier est trouvé, la condition retourne vrai.
  
'''sizeequals''' - This checks the size of a file. If the file is found and the size equals the value supplied, the condition returns true.
+
'''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''' - This checks the version of a particular file. If the file is found and the version is less than the supplied version number, the condition returns true.
+
'''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''' - This checks the version of a particular file. If the file is found and the version is less than or equal to the supplied version number, the condition returns true.
+
'''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''' - This checks the version of a particular file. If the file is found and the version is equal to the supplied version number, the condition returns true.
+
'''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''' - This checks the version of a particular file. If the file is found and the version is greater than or equal to the supplied version number, the condition returns true.
+
'''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''' - This checks the version of a particular file. If the file is found and the version is greater than the supplied version number, the condition returns true.
+
'''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.
 
</div>
 
</div>
  
Examples:
+
Exemples:
  
This checks for the existence of Adobe Reader within the filesystem:
+
Cet exemple vérifie l'existence d'Adobe Reader dans le système de fichiers:
  
 
<pre>
 
<pre>
Line 120: Line 115:
 
</pre>
 
</pre>
  
This checks to see if Firefox US English version 1.5.0.6 is installed based on the file size of the executable:
+
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 )
  
 
<pre>
 
<pre>
Line 126: Line 121:
 
</pre>
 
</pre>
  
This checks whether the version of Firefox .exe that's currently installed is less than 1.5.0.6:
+
Cet exemple vérifie que la version du fichier firefox.exe actuellement installé est inférieure à 1.5.0.6:
  
 
<pre>
 
<pre>
Line 132: Line 127:
 
</pre>
 
</pre>
  
 +
Depuis la version 1.3.0 :
  
'''Uninstall'''
+
<div style="margin-left: 30px">
 +
'''datemodifyequalto''' - La date de modification est égale à
  
Uninstall checks allow you to check the Microsoft software installation registry keys (as displayed in Windows' Add/Remove Programs section) for the existence of a particular package.  Microsoft maintains the list
+
'''datemodifynewerthan''' - La date de modification est plus récente que
of applications installed and available for uninstallation in the ''HKLM\Software\Microsoft\Windows\Current Version\Uninstall'' registry key.  The value in the DisplayName key of a
+
particular package is what's matched by this check.  The only condition available for this option is ''exists''.
+
  
<div style="margin-left: 30px">
+
'''datemodifyolderthan''' - La date de modification est plus ancienne que
'''exists''' - This checks for the existence of the particular software package in the installation database.  If the package is found, the condition returns true.
+
 
 +
'''datecreateequalto''' - La date de création est égale à
 +
 
 +
'''datecreatenewerthan''' - La date de création est plus récente que
 +
 
 +
'''datecreateolderthan''' - La date de création est plus ancienne que
 +
 
 +
'''dateaccessequalto''' - La date de dernier accès est égale à
 +
 
 +
'''dateaccessnewerthan''' - La date de dernier accès est plus récente que
 +
 
 +
'''dateaccessolderthan''' - La date de dernier accès est plus ancienne que
 
</div>
 
</div>
 +
 +
L'attribut 'value' doit contenir une chaine de caractères du format suivant :
 +
 +
Relative timestamp (in minutes):
 +
 +
-100 Means the file timestamp is compared to the timestamp 100 minutes ago.
 +
 +
+50 Means the file timestamp is compared to the timestamp 50 minutes in the future.
 +
 +
 +
Format date absolut au format ISO 8601 :
 +
 +
"2007-11-23 22:00" (22:00 local time)
 +
 +
"2007-11-23T22:00" (Both, "T" and space delimiter are allowed)
 +
 +
"2007-11-23 22:00:00" (specifies seconds which default to 0 above)
 +
 +
"2007-11-23 22:00:00.000" (specifies milliseconds which default to 0)
 +
 +
 +
On peut aussi spécifier un fuseau horaire :
 +
 +
"2007-11-23 22:00+01:00" (22:00 CET)
 +
 +
"2007-11-23 21:00Z" (21:00 UTC/GMT = 22:00 CET)
 +
 +
"2007-11-23 22:00+00:00" (21:00 UTC/GMT = 22:00 CET)
 +
 +
 +
Comparaison de fichier :
 +
 +
Préfixez la 'value' d'un arobase "'''@'''" pour pointer vers un fichier avec lequel l'horodatage doit être comparé.
  
 
Examples:
 
Examples:
  
This checks for the existence of Adobe Reader through the installation list:
+
@%SystemRoot%\explorer.exe
  
<pre>
+
@c:\myfile.txt
 +
 
 +
 
 +
Termes particuliers :
 +
 
 +
'''last-week''' Check against timestamp of exactly one week ago (7 days).
 +
 
 +
'''last-month''' Check against timestamp of exactly one month ago (30 days).
 +
 
 +
'''last-year''' Check against timestamp of exactly one year ago (365 days).
 +
 
 +
'''yesterday''' Check against timestamp of yesterday (24 hours ago).
 +
 
 +
 
 +
Exemples:
 +
 
 +
Ceci teste 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" />
 +
 
 +
Teste la taille de l'exécutable de firefox (Firefox US English version 1.5.0.6) :
 +
 
 +
<check type="file" condition="sizeequals" path="%PROGRAMFILES%\Mozilla Firefox\firefox.exe" value="7183469" />
 +
 
 +
Teste que la version du fichier "Firefox.exe" installé est inférieure à 1.5.0.6:
 +
 
 +
<check type="file" condition="versionsmallerthan" path="%PROGRAMFILES%\Mozilla Firefox\firefox.exe" value="1.5.0.6" />
 +
 
 +
===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''.
 +
 
 +
Les conditions sont :
 +
 
 +
<div style="margin-left: 30px">
 +
'''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.
 +
 
 +
'''versionsmallerthan'''
 +
 
 +
'''versionlessorequal'''
 +
 
 +
'''versionequalto'''
 +
 
 +
'''versiongreaterorequal'''
 +
 
 +
'''versiongreaterthan'''
 +
</div>
 +
 
 +
Le test effectue une comparaison avec la valeur DisplayName (pour "exists") ou DisplayVersion (pour "version*") de chaque clé présente dans ce chemin.
 +
 
 +
Exemples:
 +
 
 +
Cet exemple vérifie l'existence d'Adobe Reader dans la liste des logiciels installés du registre système :
 +
 
 +
<source lang="xml">
 
<check type="uninstall" condition="exists" path="Adobe Reader 7.0" />
 
<check type="uninstall" condition="exists" path="Adobe Reader 7.0" />
</pre>
+
</source>
  
This checks to see if Firefox version 1.5.0.6 is installed in the installation list:
+
Cet exemple vérifie que Firefox 1.6.0.6 est installé dans la liste des logiciels installés du registre système :
  
<pre>
+
<source lang="xml">
 
<check type="uninstall" condition="exists" path="Mozilla Firefox (1.5.0.6)" />
 
<check type="uninstall" condition="exists" path="Mozilla Firefox (1.5.0.6)" />
</pre>
+
</source>
  
 +
Cet exemple verifie que GIMP est installé dans une version supérieur à la 2.6.6 en utilisant le registre système ("GIMP" est le nom de la clé sous ''HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'' et "2.6.6" la valeur de la variable ''DisplayVersion'') :
  
'''Logical Conditions'''
+
<source lang="xml">
 +
<check type="uninstall" condition="versiongreaterorequal" path="GIMP" value="2.6.6" />
 +
</source>
  
There can be zero or more conditions verified during the existence checks.  If no conditions are supplied, WPKG attempts to install the package regardless of whether it's currently
+
===Execute===
installed or not.  To facilitate using more than one condition, there is a 4th type of condition that can be added, called the logical condition.  Logical conditions allow you to create
+
multiple conditions while checking for the presence of an existing package.  Logical conditions are top level conditions, with the real check conditions as subnodes in the XML.
+
  
The following logical conditions are available: ''not'', ''and'', ''or'', ''atleast'', and ''atmost''.
+
Execute allows you to execute any script which checks if an application is installed. WPKG checks the exit code of the script to determine the existence of the particular software package.
 +
This type of check also allows very complex checks. For example there is a limitation of the RegRead method used by WPKG's Registry checks to query registry values which contain backslashes '\'. Now you can execute a batch script which checks for such registry values using 'reg query ...'.
 +
There are several possible conditions available for execute checks:
 +
 
 +
<div style="margin-left: 30px">
 +
'''exitcodesmallerthan''' - This checks the exit code of the executed script. If the exit code is smaller than the supplied value, the condition returns true.
 +
 
 +
'''exitcodelessorequal''' - This checks the exit code of the executed script. If the exit code is less or equal to the supplied value, the condition returns true.
 +
 
 +
'''exitcodeequalto''' - This checks the exit code of the executed script. If the exit code is equal to the supplied value, the condition returns true.
 +
 
 +
'''exitcodegreaterorequal''' - This checks the exit code of the executed script. If the exit code is greater than of equal to the supplied value, the condition returns true.
 +
 
 +
'''exitcodegreaterthan''' - This checks the exit code of the executed script. If the exit code is greater than the supplied value, the condition returns true.
 +
</div>
  
 
Examples:
 
Examples:
  
Let's say, for the sake of argument, that you have an Adobe Reader 7.0.8 package that you want installed, but you only want it installed on workstations
+
This evaluates true if the exit code is negative
that are running Windows XP Service Pack 2 or higher, due to some strange incompatibility. Let's also say that some workstations can't be
+
<source lang="xml">
upgraded to Windows XP Service Pack 2 until those workstations are upgraded from 256MB of memory to 512MB of memoryFor a scenario like this, you could
+
<check type="execute" path="\\path\to\script.cmd" condition="exitcodesmallerthan" value="0">
(and probably should!) use multiple profiles and have those SP1 workstations in one profile, while the SP2 workstations are in another. However, just
+
</source>
for example purposes, let's say all workstations are in a single profile. You can provide a logical condition in order for only those workstations
+
 
running SP2 to be upgraded to Adobe Reader 7.0.8:
+
This evalueates true if exit code is 0 or negative
 +
<source lang="xml">
 +
<check type="execute" path="\\path\to\script.cmd" condition="exitcodelessorequal" value="0" >
 +
</source>
 +
 
 +
This evaluates true only if exit code is exactly 0
 +
<source lang="xml">
 +
<check type="execute" path="\\path\to\script.cmd" condition="exitcodeequalto" value="0" >
 +
</source>
 +
 
 +
This evaluates true if exit code is 0 or any positive number
 +
<source lang="xml">
 +
<check type="execute" path="\\path\to\script.cmd" condition="exitcodegreaterorequal" value="0" >
 +
</source>
 +
 
 +
This evaluates true if exit code is any positive number
 +
<source lang="xml">
 +
<check type="execute" path="\\path\to\script.cmd" condition="exitcodegreaterthan" value="0" >
 +
</source>
 +
 
 +
===Host===
 +
Host checks were announced in 1.3.0. They appear to allow matching against at least hostname, OS, architecture and environment variables.
 +
<source lang="xml">
 +
<check type="host" condition="hostname" value="^hostname$" />
 +
<check type="host" condition="os" value="windows 7" />
 +
<check type="host" condition="architecture" value="x64" />
 +
<check type="host" condition="environment" value="PKG_VER=^$" />
 +
</source>
 +
 
 +
===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 être 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.
  
 
<pre>
 
<pre>
Line 182: Line 335:
 
</pre>
 
</pre>
  
The 2nd condition here might seem counter intuitive, but remember that you're looking for the absence of things rather than the existence of things when you're writing
+
La deuxième condition peut paraître peu intuitive, mais rappelez-vous que quand vous écrivez des conditions, vous recherchez l'absence de choses plutôt que leur présences.
check conditions.  What the above condition says is "Is Adobe Reader 7.0.8 installed or is Service Pack 1 installed?  If either of these conditions equates to true,
+
the installation will be skipped.  In this particular case, Adobe Reader 7.0.8 isn't installed, but the value of CSDVersion is Service Pack 1 (for the SP1 boxes)
+
so the software will not be installed.
+
  
 +
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é.
  
Once all conditions have been tested, if the final result of the conditions is equal to false, WPKG will try to execute the "'''install cmd'''".
+
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.
  
After it's executed, WPKG will check the exit code (should be 0 in this example) '''*and*''' verify all the checks.
+
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'''".
  
If '''*any*''' of the checks are not met, software is considered '''*not*''' installed - so enter these values carefully!
 
 
 
Remember that you don't have to specify all three check conditions, usually one is enough: if the software you are about to install will show up in Windows' Add/Remove Programs (and not all do), it is sufficient to specify just the "'''uninstall'''" check.
 
  
 
==Actions==
 
==Actions==
  
Wpkg understands three actions: '''install''', '''upgrade''' and '''remove'''.  Multiple commands for each of these actions can be listed in the config file and wpkg will execute them in the order they are listed.
+
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.
  
The '''install''' commands are executed by wpkg when a new package comes into scope for a profile. The '''upgrade''' commands are executed when a new revision of a package comes into scope. The '''remove''' commands are executed when a package is removed from a profile.
+
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.
  
In many of the examples in the [[:Category:Silent_Installers]] section, cmd.exe is executed to perform environment variable expansion and to use 'start /wait' to wait on the command being executed. This method of executing commands results in cmd windows appearing on screen. However, this method does not appear to be necessaryThe current version of wpkg (0.9.10) executes commands using the WScript.Shell.Exec() function, which should expand environment variables. This isn't explicitly stated in the Microsoft SDK documentation, but seems to be the case. Wpkg then waits until the command is completed before continuing.
+
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écessaireLa 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.
  
The correct method of executing a command interpreter is to use the %comspec% environment variable, not specifying cmd.exe explicitlyThis is needed to run commands that are built into the interpreter and are not separate executables.
+
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").
+
Quand la sortie d'une commande est trop iportante (cas de copy ou cacls), la commande échouera. Vous devez rediriger la sortie vers NUL ou un fichier (exemple: "%command% >nul").
  
Typical examples:
+
Exemples :
  
 
<pre>
 
<pre>
<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" />
+
<install cmd="msiexec /qn /i %SOFTWARE%\package.msi" />
<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" timeout="1800" />
+
<install cmd="msiexec /qn /i %SOFTWARE%\package.msi" timeout="1800" />
<install cmd="%comspec% /c copy %SOFTWARE%/file.dll %WINDIR%" />
+
<install cmd="%comspec% /c copy %SOFTWARE%\file.dll %WINDIR%" />
<remove cmd="msiexec /qn /x %SOFTWARE%/package.msi" />
+
<remove cmd="msiexec /qn /x %SOFTWARE%\package.msi" />
 
</pre>
 
</pre>
  
The timeout option tells wpkg how long to wait for the command to complete. It is in seconds and the default is 3600 seconds.
+
L'option timeout indique à wpkg combien de temps attendre que la commande termine. C'est en secondes et la valeur par défaut est de 3600 secondes.
  
You can set reboot to "true" with the following:
+
Vous pouvez positionner l'option reboot à "true" avec ceci :
 
<pre>
 
<pre>
<install cmd="msiexec /qn /i %SOFTWARE%/package.msi" >
+
<install cmd="msiexec /qn /i %SOFTWARE%\package.msi" >
 
     <exit code="3010" reboot="true" />
 
     <exit code="3010" reboot="true" />
 
     <exit code="0" />
 
     <exit code="0" />
Line 230: Line 379:
 
</pre>
 
</pre>
  
==Quick examples==
+
==Exemples rapides==
  
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):
+
Un autre exemple - WPKG vérifie seulement si le paquet est installé dans 'Ajouter Supprimer programmes' de windows avant de décider de l'installer (afin d'être sur qu'il n'est pas déjà installé) :
  
 
<pre>
 
<pre>
Line 259: Line 408:
  
  
In the example below, there are no check conditions.
+
Dans l'exemple ci-dessous, il n'y a pas de conditions de vérifications.
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:
+
Cela signifie que WPKG executera à chaque fois - c'est plus utile pour exécuter des scripts qui doivent tourner à chaque fois que la machine démarre, plutôt que pour installer des logiciels :
  
 
<pre>
 
<pre>
Line 271: Line 420:
  
 
<!--
 
<!--
This is a comment.
+
Ceci est un commentaire.
'''No check conditions; script will be executed *each time* wpkg.js is called - each time PC is booted.'''
+
'''Pas de conditions de vérification ; le script sera éxécuté à *à chaque fois* que wpkg.js est appelé , c'est à dire à chaque fois que le PC est redémarré.'''
 
-->
 
-->
  
Line 280: Line 429:
  
  
Similar example, without any conditions, either.
+
Un exemple similaire, avec aucune condition non plus.
Note the '''execute="once"''' entry - this means that that script will be executed only once. It is useful for the tasks you want
+
Notez le '''execute="once"''' ; cela signifie que le script sera exécuté une fois seulement. C'est utile pour les tâches que vous ne voulez faire qu'une fois, comme défragmenter un disque, des tests, changer des imprimantes , etc ...
to do one time only, like disk defragmenting, some testing, changing printers etc.
+
  
 
<pre>
 
<pre>
Line 297: Line 445:
 
</pre>
 
</pre>
  
Similarly, you may want to execute a program or script each time - use "always" instead of "once". For more info on this functionality, check [[Execute_once_/_always|here]].
+
De la même manière, vous pouvez exécuter un script à chaque fois ; utilisez "always" à la place de "once". Pour plus d'info sur cette fonctionnalité, lisez [[Execute_once_/_always|ceci]].
 
+
==Package dependencies==
+
 
+
Packages can also depend on other packages, see [[package dependencies]] for more info.
+
  
 +
==Dépendances de paquets==
  
==Individual XML package files==
+
Les paquets peuvent aussi dépendre d'autres paquets, voir [[package dependencies]] pour plus d'info.
  
If you would rather keep your package XML description in separate files, you can of course do it: just create a <code>packages</code> directory where <code>wpkg.js</code> is, and place individual XML files there (i.e., thunderbird.xml, firefox.xml etc.). The syntax is the same as that of packages.xml.
+
==Définir des fichiers XML individuels pour les paquets==
  
Note, if you decide to keep all your packages in separate XML files, still, you need to have <code>packages.xml</code> file. It should at least contain an empty <code></code> entry:
+
Vous pouvez, si vous le souhaitez, séparer les définitions de vos paquets dans des fichiers individuels. Créez un répertoire <code>packages</code> dans le même emplacement que le fichier <code>wpkg.js</code>. 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 <code>packages.xml</code>. Ce fichier doit contenir au moins le code suivant:
 
<pre>
 
<pre>
 
<packages>
 
<packages>
Line 315: Line 461:
 
</pre>
 
</pre>
  
==See also==
+
==Voir aussi==
* [[profiles.xml]] - defines the profiles.
+
* [[profiles.xml:French]] - définit les profils.
* [[hosts.xml]] - defines the hosts.
+
* [[hosts.xml]] - définit les hôtes.
* [[wpkg.js]] - WPKG engine.
+
* [[wpkg.js]] - Moteur WPKG.
* [[package dependencies]] - package dependencies.
+
* [[package dependencies]] - dépendances de paquets.
  
 
[[category:Documentation]]
 
[[category:Documentation]]
 
[[category:Installation]]
 
[[category:Installation]]
 
[[category:Config_Files]]
 
[[category:Config_Files]]

Latest revision as of 11:23, 20 December 2012

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
  • Uninstall - Teste les conditions par rapport aux logiciels apparaissant dans Ajout/Suppression de programmes

Registry

Les tests sur le registre permettent de vérifier l'existence 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)" />

File

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" />

Depuis la version 1.3.0 :

datemodifyequalto - La date de modification est égale à

datemodifynewerthan - La date de modification est plus récente que

datemodifyolderthan - La date de modification est plus ancienne que

datecreateequalto - La date de création est égale à

datecreatenewerthan - La date de création est plus récente que

datecreateolderthan - La date de création est plus ancienne que

dateaccessequalto - La date de dernier accès est égale à

dateaccessnewerthan - La date de dernier accès est plus récente que

dateaccessolderthan - La date de dernier accès est plus ancienne que

L'attribut 'value' doit contenir une chaine de caractères du format suivant :

Relative timestamp (in minutes):

-100 Means the file timestamp is compared to the timestamp 100 minutes ago.

+50 Means the file timestamp is compared to the timestamp 50 minutes in the future.


Format date absolut au format ISO 8601 :

"2007-11-23 22:00" (22:00 local time)

"2007-11-23T22:00" (Both, "T" and space delimiter are allowed)

"2007-11-23 22:00:00" (specifies seconds which default to 0 above)

"2007-11-23 22:00:00.000" (specifies milliseconds which default to 0)


On peut aussi spécifier un fuseau horaire :

"2007-11-23 22:00+01:00" (22:00 CET)

"2007-11-23 21:00Z" (21:00 UTC/GMT = 22:00 CET)

"2007-11-23 22:00+00:00" (21:00 UTC/GMT = 22:00 CET)


Comparaison de fichier :

Préfixez la 'value' d'un arobase "@" pour pointer vers un fichier avec lequel l'horodatage doit être comparé.

Examples:

@%SystemRoot%\explorer.exe

@c:\myfile.txt


Termes particuliers :

last-week Check against timestamp of exactly one week ago (7 days).

last-month Check against timestamp of exactly one month ago (30 days).

last-year Check against timestamp of exactly one year ago (365 days).

yesterday Check against timestamp of yesterday (24 hours ago).


Exemples:

Ceci teste 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" />

Teste la taille de l'exécutable de firefox (Firefox US English version 1.5.0.6) :

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

Teste que la version du fichier "Firefox.exe" installé est inférieure à 1.5.0.6:

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

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.

Les conditions sont :

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.

versionsmallerthan

versionlessorequal

versionequalto

versiongreaterorequal

versiongreaterthan

Le test effectue une comparaison avec la valeur DisplayName (pour "exists") ou DisplayVersion (pour "version*") de chaque clé présente dans ce chemin.

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)" />

Cet exemple verifie que GIMP est installé dans une version supérieur à la 2.6.6 en utilisant le registre système ("GIMP" est le nom de la clé sous HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall et "2.6.6" la valeur de la variable DisplayVersion) :

<check type="uninstall" condition="versiongreaterorequal" path="GIMP" value="2.6.6" />

Execute

Execute allows you to execute any script which checks if an application is installed. WPKG checks the exit code of the script to determine the existence of the particular software package. This type of check also allows very complex checks. For example there is a limitation of the RegRead method used by WPKG's Registry checks to query registry values which contain backslashes '\'. Now you can execute a batch script which checks for such registry values using 'reg query ...'. There are several possible conditions available for execute checks:

exitcodesmallerthan - This checks the exit code of the executed script. If the exit code is smaller than the supplied value, the condition returns true.

exitcodelessorequal - This checks the exit code of the executed script. If the exit code is less or equal to the supplied value, the condition returns true.

exitcodeequalto - This checks the exit code of the executed script. If the exit code is equal to the supplied value, the condition returns true.

exitcodegreaterorequal - This checks the exit code of the executed script. If the exit code is greater than of equal to the supplied value, the condition returns true.

exitcodegreaterthan - This checks the exit code of the executed script. If the exit code is greater than the supplied value, the condition returns true.

Examples:

This evaluates true if the exit code is negative

<check type="execute" path="\\path\to\script.cmd" condition="exitcodesmallerthan" value="0">

This evalueates true if exit code is 0 or negative

<check type="execute" path="\\path\to\script.cmd" condition="exitcodelessorequal" value="0" >

This evaluates true only if exit code is exactly 0

<check type="execute" path="\\path\to\script.cmd" condition="exitcodeequalto" value="0" >

This evaluates true if exit code is 0 or any positive number

<check type="execute" path="\\path\to\script.cmd" condition="exitcodegreaterorequal" value="0" >

This evaluates true if exit code is any positive number

<check type="execute" path="\\path\to\script.cmd" condition="exitcodegreaterthan" value="0" >

Host

Host checks were announced in 1.3.0. They appear to allow matching against at least hostname, OS, architecture and environment variables.

<check type="host" condition="hostname" value="^hostname$" />
<check type="host" condition="os" value="windows 7" />
<check type="host" condition="architecture" value="x64" />
<check type="host" condition="environment" value="PKG_VER=^$" />

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 être 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 l'absence de choses plutôt que leur 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).

Quand la sortie d'une commande est trop iportante (cas de copy ou cacls), la commande échouera. Vous devez rediriger la sortie vers NUL ou un fichier (exemple: "%command% >nul").

Exemples :

<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" />

L'option timeout indique à wpkg combien de temps attendre que la commande termine. C'est en secondes et la valeur par défaut est de 3600 secondes.

Vous pouvez positionner l'option reboot à "true" avec ceci :

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

Exemples rapides

Un autre exemple - WPKG vérifie seulement si le paquet est installé dans 'Ajouter Supprimer programmes' de windows avant de décider de l'installer (afin d'être sur qu'il n'est pas déjà installé) :

<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>


Dans l'exemple ci-dessous, il n'y a pas de conditions de vérifications. Cela signifie que WPKG executera à chaque fois - c'est plus utile pour exécuter des scripts qui doivent tourner à chaque fois que la machine démarre, plutôt que pour installer des logiciels :

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

<!--
Ceci est un commentaire.
'''Pas de conditions de vérification ; le script sera éxécuté à *à chaque fois* que wpkg.js est appelé , c'est à dire à chaque fois que le PC est redémarré.'''
-->

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


Un exemple similaire, avec aucune condition non plus. Notez le execute="once" ; cela signifie que le script sera exécuté une fois seulement. C'est utile pour les tâches que vous ne voulez faire qu'une fois, comme défragmenter un disque, des tests, changer des imprimantes , 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>

De la même manière, vous pouvez exécuter un script à chaque fois ; utilisez "always" à la place de "once". Pour plus d'info sur cette fonctionnalité, lisez ceci.

Dépendances de paquets

Les paquets peuvent aussi dépendre d'autres paquets, voir package dependencies 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