SYNTAXE
GENERALITES
Tous les fichiers ressources Updater sont de simple fichier texte. Ils possèdent tous une balise de début et une balise de fin. Ce document énumère cette structure, ainsi que la syntaxe et les variables des scripts.
FICHIER D'ENTETE (updater.upd)
Ce fichier est l'entête de la mise à jour.
C'est dans ce fichier structuré que vous indiquerez un nom, la référence
de la mise à jour, l'adresse du script ainsi qu'une description. Ce fichier doit exister sur
le serveur de mise à jour (peut importe le nom)
Ce fichier n'est pas forcement
nécessaire, il permet de simplifier les petites mises à jours.
Format
| [UPDATER] Nom de la mise à jour référence de la mise à jour (au format date updater) Url du script de mise à jour Description ligne 1 Description ligne 2 Description ligne 3 ... [UPDATER_END] |
Note
Ce fichier commence à la 1er ligne du fichier.
L'ordre est des information très important.
Les données sont indiqué brute sans délimiteur
Les information Nom, référence et Url doivent être renseignés
La référence de la mise à jour peut être un nombre, une date ou une version
Aucunes limites sur le nombre de lignes de la description.
FICHIERS SCRIPT (script.upd)
Ces fichiers sont la partie exécutive de la mise à jour.
Il doit exister au moins un script sur le serveur de mise à jour (ex: script.upd)
Généralité
Pour mettre à jour votre environnement et/ou votre application vous avez besoin
de télécharger des fichiers, les manipuler, les installer et effectuer
quelques comparaison ou vérification durant l'exécution.
Un fichier script Updater est un fichier texte organisé
ligne par ligne. Chaque ligne correspond à une instruction.
L'ordonnancement chronologique des opérations effectuées suit donc la
chronologie des lignes du fichier.
Exemple:
L'instruction sur la ligne 6 sera exécutée puis ensuite celle de la ligne 7,
puis la ligne 8, etc...
| Ligne N°6 - Télécharge le fichier
truc.bin Ligne N°7 - Renomme le fichier truc.bin en truc.exe Ligne N°8 - Exécute le fichier truc.exe |
Il est possible que durant l'exécution vous vouliez vérifiez tel ou tel
condition (fichier présent, résultat d'un message OUI/NON, etc..) avant
d'effectuer une tache. Les scripts Updater permettent de "sauter" l'exécution de
certaines lignes suivant un cas bien définie. C'est ce que l'on appelle des
Tests.
Exemple:
Si l'utilisateur répond 'OUI' au test l'exécution continue à la ligne N°6.
Si il répond 'NON' l'exécution reprend après la ligne N°9
| Ligne N°5 - Test: message
"Voulez vous installer truc ?" Ligne N°6 - Télécharge le fichier truc.bin Ligne N°7 - Renomme le fichier truc.bin en truc.exe Ligne N°8 - Exécute le fichier truc.exe Ligne N°9 - Fin du test |
Format
Encadré par 2 balises le script contient les instructions.
L'exécution commence après la balise de début.
Elle s'arrête lorsque la balise de fin est rencontrée (ou si une instructions de
fermeture ou d'arrêt est exécutée).
(Si le script à été appelé par un autre script, il retourne à l'appelant à la
rencontre de la balise de fin)
| [SCRIPT] Instructions Instructions ... [SCRIPT_END] |
Instructions
L'appelle des instructions est identique a toutes les instructions, une
instruction peut posséder des paramètres, ces paramètres sont séparé par des
espaces.
INSTRUCTION PARAM1 PARAM2 PARAM3 ...
Exemple de copie du fichier "Test.txt" de "Toto" vers
"Truc"
COPY C:\Toto\Test.txt C:\Truc\Test.txt
Dans la documentation, certain paramètres sont spécifié
entre crochet [ ], cela indique qu'il sont optionnels
Exemple: MSG_OK Message [Titre] [icônes]
Cela signifie que vous n'étés pas obligé de spécifier ni le titre ni l'icônes,
des valeurs par défaut on été prévue dans la commande.
Bien sûr, si vous désirez spécifier l'icônes il vous faudra alors spécifier le
titre, il est alors possible de mettre ce paramètre à blanc ("").
Dans ce cas si le paramètre attendu est un répertoire la valeur a blanc sera
remplacer par la variable PATH, et idem pour les dates avec la variable DATE.
Syntaxe
La syntaxe utiliser dans les scripts suit quelques règles très simples.
Commentaires (')
Les lignes qui commencent par le caractère (') sont considérés comme des commentaires. C'est à dire non interprétées par Updater, comme une ligne vide.
Spécifier une chaîne de mot ("")
Comme le séparateur de paramètres d'instruction est l'espace si l'on veut spécifier une suite de mots séparés par un espace il faut les encapsuler de guillemets (") afin qu'ils soit interprétés comme un seul et même paramètre.
Exemple:
COPY "C:\Program Files\Test.txt" "C:\Truc\Test.txt"
Pour spécifier un guillemet dans la chaîne de mot il suffit de le doubler, il sera interprété comme 1 seul.
Exemple:
"Merci ""Updater"" !" donnera Merci "Updater" !
Variables ($.. et %..%)
Il existe plusieurs variables dans Updater, utilisables par le script. Ce sont des sortes de cases ou l'on peut stocker des informations. (Chemin de fichier, nom, date, texte,etc..) ces cases ont donc un nom.
Elle possède ou non une valeur à l'initialisation de l'application.
Pour affecter une valeur à une variable on spécifie son nom préfixé de '$' puis la valeur.
Pour utiliser la valeur dans un paramètre ou une chaîne on l'encadre des séparateurs '%'
Lorqu'on utilise la valeur d'une variable, son contenue est substitué a son %nom%.Exemple:
$HOST www.hexanium.com 'Affectation de l'url dans la variable HOST
$PATH "c:\Program Files" 'Affectation du chemin dans la variable PATH
$VAR "Mon Text à moi" 'Affectation d'un text à la variable libre
'Ouvre un navigateur sur http:// www.hexanium.com/info/page.htm
OPEN_URL %HOST%/info/page.htm
'Créer un répertoire c:\Program Files\Updater
MKD %PATH%\Updater
'Affiche un message sur la console >>>Mon Text à Moi<<<
PRINT ">>>%VAR%<<<"
Variable en Lecture seule (Constantes):
Ces variables peuvent seulement être lue (%...%).Constantes Updater:
NULL Caractere NULL #0 CR Carriage return #13 LF Line feed #10 CRLF Saut de ligne #13 + #10 APP_PATH Répertoire d'exécution de Updater.exe TMP_PATH Répertoire temporaire de Updater "\Temp" DATA_PATH Répertoire des données de Updater "\Updater" EXE_NAME Nom de l'exécutable updater SCRIPT_NAME Nom du script exécuté
Supportée depuis la version V1.01
SCRIPT_PATH Répertoire du script exécuté
Supportée depuis la version V1.01
EXE_DATE Date de l'exécutable Updater
Supportée depuis la version V1.05
EXE_VERSION Version de l'exécutable Updater
Supportée depuis la version V1.05
NOW Date et heure courante
Supportée depuis la version V1.15
Constantes Windows:
WIN_VERSION Version de Windows, peut être:
WINDOWS NT 3.51
WINDOWS NT 4.0
WINDOWS 95 SP1
WINDOWS 95 SP2
WINDOWS 98 SP1
WINDOWS 98 SP2
WINDOWS ME
WINDOWS 2000
WINDOWS XP
WINDOWS 2003
UNKNOW
Supportée depuis la version V1.05
WIN_PATH Répertoire "Windows" WIN_SYS_PATH Répertoire "System32" WIN_PRGM_PATH Répertoire des programmes installés 'Program Files" WIN_TMP_PATH Répertoire temporaire de l'utilisateur courant.'Temp'
Supportée depuis la version V1.06
WIN_SEND_TO_PATH Répertoire "Envoyer vers ..." de l'utilisateur courant.
WIN_DESK_PATH Répertoire du "Bureau" de l'utilisateur courant. WIN_MENU_PATH Répertoire du "Menu démarrer" de l'utilisateur courant. WIN_MENU_PRGM_PATH Répertoire du "Menu démarrer" "Programmes" de l'utilisateur courant. WIN_MENU_START_PATH Répertoire du "Menu démarrer" "Démarrage" de l'utilisateur courant. WIN_CMN_DESK_PATH Répertoire du "Bureau" de tous les utilisateurs WIN_CMN_MENU_PATH Répertoire du "Menu démarrer" de tous les utilisateurs WIN_CMN_MENU_PRGM_PATH Répertoire du "Menu démarrer" "Programmes" de tous les utilisateurs WIN_CMN_MENU_START_PATH Répertoire du "Menu démarrer" "Démarrage" de tous les utilisateurs SYS_LANGUAGE Langage du système d'exploitation.
(Correspond au paramétrage de langue Windows dans les options régionales et linguistiques.)
exemples:
Français (France)
Allemand (Allemagne)
Anglais (Etat-Unis)
etc..
Supportée depuis la version V1.12
Variable en Lecture/Ecriture:
Ces variables peuvent être affecté ($...) et lue (%...%) par le script.
Certaines d'entre elles ont un rôle spécifique dans les instructions.
HOST Adresse du serveur de mise à jour
(Vide par défaut)ROOT Répertoire "racine" sur le serveur de mise à jour
(Vide par défaut)VAR Variable libre 1.
(Vide par défaut)VAR2 Variable libre 2. (Vide par défaut)
Supportée depuis la version V1.06
VAR3 Variable libre 3. (Vide par défaut)
Supportée depuis la version V1.06
VAR4 Variable libre 4.(Vide par défaut)
Supportée depuis la version V1.06
PATH Variable libre pour spécifier des chemins
(contient le chemin de Updater.exe par défaut.)UPDATE Variable libre pour spécifier des dates, nombre ou version
(contient la date le numéro ou la version de l'entête, par défaut, si le script est appelé de l'entête, si non elle est vide)
Supportée depuis la version V1.11
DATE Variable libre pour spécifier des dates, nombre ou version
Identique à update, préférez utiliser UPDATE, DATE est conservée pour des raisons de compatibilité
TITLE Spécifie le Titre indiquer sur la console
Supportée depuis la version V1.05
CAPTION Spécifie le titre de la fenêtre principale de la console
Supportée depuis la version V1.05
CONSOLE_WIDTH Spécifie la largeur de la console (sans le logo) en pixel
Supportée depuis la version V1.05
Les variables on une portée dans tous les scriptes elle ne sont initialisée par défaut qu'au démarrage du script principale.
Date ("dd/mm/yyyy hh:mm:ss")
Certaines instructions utilisent des paramètres contenant des dates. pour les spécifier il faut suivre ce format: "DD/MM/YYYY hh:mm:ss" <=> "Jour/Mois/Année heure:minute:seconde"
Date et heure séparé par un espace, il est donc nécessaire des les encapsuler dans des guillemets.
Dans les instructions qui utilisent les dates, si celle si n'est pas spécifié c'est la date de la variable UPDATE qui est utilisée. (Son contenue par défaut provient de l'entête de mise à jour si le script à été appelé par l'entête si non elle et vide et peut provoquer une erreur. )
Version (Major.Minor.SubMajor.SubMinor ou Major.Minor.Release.Build)
Certaines instructions utilisent des paramètres contenant des versions. pour les spécifier il faut suivre ce format:
Major.Minor.SubMajor.SubMinor
Le séparateur est le point ".". il n'est pas nécessaire de l'encapsuler dans des guillemets
Pour plus de flexibilité le format des versions est souple, en effet si l'on spécifie: 2.3 cela équivaut en fait à une version 2.3.0.0
Il n'est donc pas nécessaire de spécifier l'ensemble du numéro de version, il sera cadré à gauche
Exemple: 2.3.4 => 2.3.4.0; 2 => 2.0.0.0, etc...
URL (http:// ou / )
Certaines instructions utilisent des paramètres contenant des adresses Internet d'un fichier. Pour spécifier une URL direct il suffit de la préfixer par "HTTP://".
Exemple:
GET http://www.hexanium.com/monappli/monfichier.zip ...
si celle si elle possède des espaces
GET "http://www.hexanium.com/mon appli/monfichier.zip" ...
Souvent les fichiers sont sur le même serveur, il est alors utile de spécifier un adressage relatif à la racine du serveur de mise à jour et éviter ainsi d'écrire à chaque fois le début de l'adresse.
Pour cela, il faut affecter les variable HOST et ROOT correctement
Exemple:
'On affecte les variables
$HOST www.hexanium.com
$ROOT /monappli/update'On utilise l'adressage relatif
GET /monfichier.zip ...Ce mécanisme permet de déplacer rapidement les scripts d'un serveur à un autre.
(Par convention, si la racine sur serveur de mise à jour est la racine (DNS), ROOT doit alors être vide.)
Chemin ( x:\ ou \ ou \\ )
Dans les scripts Updater il est de convention de ne pas spécifier le slash ou l'anti-slash à la fin des chemins et url.
Dans les instructions qui utilisent les chemins, si celle si n'est pas spécifié c'est le chemin de la variable PATH qui est utilisée. (Son contenue par défaut est le répertoire de l'exécutable Updater.exe. ). Si le chemin commence par '\' c'est alors le chemin "PATH + Chemin" qui est interprété. Ceci permet d'utiliser l'adressage relatif.
References Stockées (@...)
Updater permet de stocker des données locales (dates, valeurs, etc..) en leur donnant un nom, le nom d'un groupe ou d'un fichier.
L'utilisateur peut nommée comme il l'entend les données stockées. Il peut alors effectuer des vérifications sur les prochaines mises à jour.
L'instruction UPDATE gère les dates des fichiers automatiquement grâce à ce mécanisme.
Dans les scripts Updater il est de convention de préfixer les références stockées par un arobase (@) et le références temporaire par un dièse (#). Ce n'est en aucun cas une obligation !
(Updater crée automatique une date stockée nommé @Updater à l'initialisation)
Instruction de Tests
Updater possède un petit jeu d'instructions de test, ces instructions fonctionne que si elle sont précédé de la commande de test IF ou IFNOT. La fin de la portion de code exécutée dans le cas ou le teste est valide est délimité par IF_END.
IF exécute la portion de code si le test est valide et la saute si le test est non-valide.
IFNOT n'exécute pas la portion de code si le test est valide et l'exécute si le test est non-valide.
IFNOT est l'inverse de IF
Depuis la version 1.02 il est possible de spécifier l'opérateur ELSE
Exemple:
'Affiche un message en fonction de l'existence du répertoire
IFNOT FOLDER_EXISTE %APP_PATH%\MonRep
PRINT "N'existe pas !"
IF_END
IF FOLDER_EXISTE %APP_PATH%\MonRep
PRINT "Existe !"
IF_END'Equivaut à:
IF FOLDER_EXISTE %APP_PATH%\MonRep
PRINT "Existe !"
ELSE
PRINT "N'existe pas !"
IF_END'Télécharge et copie le fichier si l'utilisateur clique sur OK
IF MSGBOX "Voulez vous télécharger truc ?"
GET \Truc.exe %TMP_PATH%
COPY %TMP_PATH%\Truc.exe %PRG_PATH%\MonAppli\Truc.exe
IF_END
Note
Les lignes vides dans le script ne sont pas exécutées.
Une instruction et tous ses paramètres doivent être écrit sur une seul et même ligne.
FICHIER DE DONNEE DE REFERENCE (data.upd)
Ce fichier est l'archive des données (dates,nombre,version,valeurs) stockées
localement. Ces valeurs de référence sont spécifiées par un Nom et une valeur
(Qui peut être une date au format date, un nombre, une version ou tous autre
type)
Ces valeurs ou ces dates peuvent être comparée lors de l'exécution du script.
Il contient en début de fichier la référence principale de la dernière mise à jour.
Format
| [DATA] Date/Numéro/Version de la dernière mise à jour (au format Updater) Nom référence N°1 Valeur N°1 (texte ou date au format date updater) Nom référence N°2 Valeur N°2 (texte ou date au format date updater) ... [DATA_END] |
Note
Ce fichier commence à la 1er ligne du fichier.
L'ordre est des information est très important.
Les données sont indiquées brutes sans délimiteur
Les Noms et valeurs peuvent être vide.
LIGNE DE COMMANDE (Updater.exe)
Le programme Updater.exe peut être lancé de différente manières. Les paramètres de la ligne de commande peuvent en contrôler le démarrage.
Sans paramètres
Le programme lancé sans paramètre démarre en mode
standard, il récupère les informations du fichier Updater.ini pour récupérer
l'entête de mise à jour. Chaque tache est validée a l'initiative de
l'utilisateur.
>Updater.exe (Equivalent à un double clique)
Avec paramètres
Les paramètres de la ligne de commande permettent de contrôler le démarrage
Modèle:
> Updater.exe [aide] [Visible] [Mode] [Adresse]
> Updater.exe [-h] [-i/-v] [-c/-r/-ra/-ca] [url/adresse]
-i
Démarre en mode invisible (deviens visible si une mise à jour est disponible)
-v
Démarre en mode visible
-c
Démarre en mode vérification de mise à jour sur le fichier spécifié par son adresse ou son url
-r
Démarre en mode exécution de script sur le fichier spécifié par son adresse ou son url
-ca
Démarre en mode vérification de mise à jour sur le fichier spécifié par son adresse ou son url avec confirmation utilisateur de démarrage.
-ra
Démarre en mode exécution de script sur le fichier spécifié par son adresse ou son url avec confirmation utilisateur de démarrage.
Url/adresse
Spécifie l'url ou l'adresse du script ou de l'entête (par défaut Url/adresse du fichier updater.ini). Si l'adresse commence par http:// le fichier sera téléchargé
Vous pouvez l'utiliser dans un fichier .bat par exemple.
Par défaut les
valeurs non spécifiées sont celle du fichier updater.ini.
FICHIER D'INITIALISATION (Updater.ini)
Ce fichier contient les paramètres
d'initialisation de l'application.
Pour configurer/customiser votre updater pour votre distribution, vous devez
joindre le fichier ini correctement paramétré sur votre serveur de mise à jour.
Format
| [Updater] Mode= 'Mode de démarrage par défaut (Défaut: 1) Head= 'Url/Chemin du fichier d'entête à traiter en fonction du mode. (Défaut: vide) Script= 'Url/Chemin du fichier script à exécuter en fonction du mode.(Défaut: vide) Visible= '1:Visible - 0:Invisible (Défaut: 1) Title= 'Titre de la mise à jour. (Défaut: vide) Logo= 'Chemin réel du fichier Logo. (Défaut: vide) Link= 'Libellé du lien (Défaut: vide) LinkUrl= 'Url du lien (Défaut: vide) Caption= 'Titre de la fenêtre. (Défaut: vide) ConsoleWidth= 'Largeur de la console (Sans le logo) (Défaut: 400) Debug= '1:Debug On, 0:Debug Off (Défaut: 0)
[Directory] |
Mode:
0 - Vérification de mise à jour (Head) avec confirmation utilisateur.
1 - Exécution de script (Script) avec confirmation utilisateur.
2 - Vérification de mise à jour (Head) .
3 - Exécution de script (Script).
Note
Ce fichier fonctionne par Section, Clef, Valeur.(Fichier *.ini classique)
Par défaut Updater crée un fichier .ini par défaut si il n'existe pas.
Depuis la version 1.10 le fichier ini peut être intégré à l'exécutable
Pour spécifier un chemin relatif de répertoire ou de fichier il doit commencer par un seul "\" le chemin sera alors considéré comme étant spécifié à partir du répertoire de l'exécutable Updater.