Fonctions additionnelles d'installation

par 4 contributeurs :

 

NdT : Attention, cette section décrit le mécanisme XPInstall propre à la suite Mozilla et à des versions anciennes de Mozilla Firefox. Pour les versions récentes de Mozilla Firefox, ce mode d'installation n'est plus le même, mais il n'est pas encore décrit dans ce tutoriel. Voir comment faire des extensions pour firefox sur xulfr.org.

Cette section décrit quelques spécificités supplémentaires des programmes d'installation.

Manipulation de fichiers lors de l'installation

La section précédente décrivait un programme d'installation simple. Vous pouvez souhaiter réaliser quelques opérations plus élaborées pendant l'installation. Par exemple, vous voulez installer un paquetage seulement si certaines conditions sont réunies, comme d'avoir une librairie particulière installée.

En complément de l'objet Install, l'objet File est également disponible pendant le script d'installation. Il fournit quelques fonctions qui peuvent être employées pour examiner et modifier des fichiers sur le disque. Vous pouvez les utiliser pour déplacer, copier ou effacer des fichiers avant ou après que les fichiers du paquetage soient installés. Par exemple, vous voulez peut être faire une sauvegarde de quelques fichiers d'abord.

Le code ci dessous fera une copie du fichier "/bin/grep" dans le répertoire "/main".

var binFolder=getFolder("file:///","bin");
var grep=getFolder(binFolder,"grep");

var mainFolder=getFolder("file:///","main");

File.copy(grep,mainFolder);
  • La première ligne va renseigner un pointeur sur le répertoire '/bin'. Le texte 'file:///' est une chaîne de caractères spéciale qui correspond à la racine du système de fichiers.
  • À partir de ce pointeur, nous récupérons le fichier 'grep' qui se trouve dans le répertoire 'bin'. Si ce fichier n'existe pas, une erreur sera signalée au processus d'installation.
  • Ensuite, nous pointons sur le répertoire 'main', toujours à partir de la racine du système de fichiers.
  • Finalement, nous appelons la fonction 'File.copy' qui copie le fichier source vers sa destination.

Des fonctions existent également pour déplacer (move()), renommer (rename()) et exécuter (execute()) des fichiers. Ainsi, vous pouvez déplacer des fichiers qui peuvent se trouver en conflit avec votre paquetage.

Interception des erreurs

Vous voulez certainement intercepter d'éventuelles erreurs proprement. Elles peuvent se produire si un fichier ou un répertoire ne peut pas être trouvé, si la capacité du disque n'est pas suffisant ou pour toutes autres raisons.

Il vous suffit d'appeler la fonction getLastError() pour déterminer si une erreur a été rencontrée. Si elle renvoie 'SUCCESS', aucune erreur ne s'est produite. Autrement, elle renvoie un nombre qui indique le code d'erreur. Vous pouvez appeler cette fonction en tout point de votre script d'installation pour déterminer si une erreur est survenue lors de la dernière opération effectuée.

Si une erreur se produit, vous voulez sûrement interrompre l'installation. Vous pouvez également vouloir afficher un message d'erreur pour l'utilisateur. Par exemple, vous pourriez mettre le script suivant à la fin de votre script d'installation :

if (getLastError() == SUCCESS){
  performInstall();
}
else {
  cancelInstall();
}

Les codes d'erreurs susceptibles d'être renvoyés par la fonction getLastError() sont listés dans le fichier source de Mozilla nsInstall.h. Pendant l'installation, un suivi d'événements contenant les opérations réalisées est créé. Il contiendra également toutes les erreurs qui se sont produites. Ces événements peuvent être trouvés dans le fichier 'install.log' dans le répertoire d'installation de Mozilla. Un bloc de texte sera ajouté à ce fichier à chaque installation effectuée.

La fonction logComment() peut être utilisée pour écrire un texte dans ce fichier d'événements. Elle nécessite un seul argument qui est le contenu du texte.


Le Tutoriel XUL est terminé.

Interwiki

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : tregagnon, Sheppy, E.cg, Chbok
Dernière mise à jour par : tregagnon,