NOTA : ce qui est décrit ci-dessous concerne Mozilla, et non Firefox. Durant la phase de développement d'un composant XPCOM, il est souvent nécessaire de fermer puis réouvrir le navigateur, et, comme j'utilise Firefox pour naviguer sur le WWW, et bien j'utilise Mozilla pour les tests. Le but est cependant de parvenir à écrire un composant XPCOM pour Firefox, mais les différences avec Mozilla concernant cette aspect sont minimes, paraît-il, et seront abordées le moment venu.
Ce sujet couvre l'installation manuel d'un composant XPCOM. Pourquoi manuelle ? Parce que c'est plus pratique durant la phase de développement. En effet, pour pouvoir accèder librement à un composant XPCOM, les scripts ou fichier XUL doivent être situés dans le sous-répertoire chrome du navigateur. C'est dans ce répertoire que se situe les extensions du navigateur, qui sont normallement installés à l'aide d'un fichier .xpi. Mais il est beaucoup trop lourd de créer un tel fichier et de l'installer à la moindre modification, donc est exposée ci-dessous une manière d'intaller le composant et l'extension associée qui nécessite, pour prendre en compte les modifications, au pire le redémarrage du navigateur.
Cette page fait office, en premier lieu, de pense-bête, c'est-à-dire que la méthode exposée n'est peut-être pas la plus rapide/performante/efficace, mais fonctionne. Je m'appliquerais à l'optimiser ultèrieurement.
Si vous souhaitez placer l'extension dans l'arborescence du navigateur, il faut créer les répertoires et sous-répertoires suivants, dans le répertoire chrome du navigateur.
MonExt/content/
Il faut éditer le fichier installed-chrome.txt et ajouter la ligne suivante :
content,install,url,resource:/chrome/MonExt/content/
Si vous souhaitez placer votre extension à un autre endroit, supposons h:\MonExt\, il suffit d'ajouter dans ce même fichier
installed-chrome.txt
content,install,path,H:\MonExt\
ATTENTION : Modifier ce fichier peut empêcher l'installation d'extensions, par exemple si vous ne placez pas de saut de ligne à la fin de la ligne que vous ajoutez 1). En outre, prenez garde à utiliser un éditeur qui reconnaisse les sauts de lignes (UNIX ?) de ce fichier ; si, en éditant ce fichier, vous ne voyez qu'une seule ligne, changez d'éditeur. Et tout état de cause, faite une copie de sauvegarde de ce fichier avant de le modifier, ou sinon, en cas de pépin, vous d'avoir risquez à réinstaller Mozilla (ou Firefox) et toutes ses extensions !
Le répertoire déclaré dans installed-chrome.txt doit contenir un fichier contents.rdf (avec un s) dont voici le contenu :
<?xml version="1.0"?> <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:chrome="http://www.mozilla.org/rdf/chrome#"> <!-- Liste de tous les 'packages' fournis. --> <RDF:Seq about="urn:mozilla:package:root"> <RDF:li resource="urn:mozilla:package:NomExt"/> </RDF:Seq> <!-- Informations 'package'. --> <RDF:Description about="urn:mozilla:package:NomExt" chrome:displayName="Nom de MonExt" chrome:author="Auteur de MonExt" chrome:name="NomExt"> </RDF:Description> </RDF:RDF>
C'est dans ce répertoire que vous pourrez placer tous les fichiers XUL et/ou javascript.
NOTA : Pour inclure un fichier MonScript.js dans un fichier XUL, référencez-le fichier de la manière suivante 2):
<code>
chrome:NomExtMonScript.js
</code>
(notez le double slash entre NomExt et MonScript.js.
3))
Pour lancer un fichier XUL placé dans ce répertoire et nommé MonExt.xul, lancez :
mozilla chrome://NomExt//MonExt.xul
Notez le double slash entre NomExt et MonExt.xul 4).
Pour lancer le même fichier mais sans tout l'attirail propre à mozilla, lancez :
mozilla -chrome chrome://NomExt//MonExt.xul
Notez le -chrome en plus.
Enfin, pour lancer Mozilla avec la console Javascript lancée d'office, lancez :
mozilla -jsconsole -chrome chrome://NomExt//MonExt.xul
Il s'agit là de mettre en place le composant XPCOM proprement dit.
Dans le cadre de la compilation du composant XPCOM (voir http://epeios.org/wiki/other/gecko/xpcom/compiling), en plus du composant proprement dit, sous forme de DLL, un fichier d'extension xpt est génèré. Ces deux fichiers doivent être placés dans le répertoire components de Mozilla.
Pour que Mozilla prennent en compte le composant, la commande suivante doit être lancée (Mozilla ne doit pas être lancé) :
mozilla\regxpcom -x mozilla\components
où mozilla est le répertoire d'installation de Mozilla. En outre, les fichiers xpti.dat et compreg.dat, toujours situés dans le répertoire components de Mozilla, doivent être supprimés. Ils seront recrées lors du prochain lancement de Mozilla.
Remarque concernant xulrunner : il n'y a pas de fichiers xpti.dat et compreg.dat. Pour que xulrunner prennent en compte le composant, il faut faire un touch .autoreg dans le répertoire racine de l'installation de xulrunner.
Vous pouvez contrôler si le composant s'est bien installé grâce à l'extension CView que l'on peut trouver à l'adresse http://www.hacksrus.com/~ginda/cview/ .