Ces informations sont valables pour Firefox 0.9 et suivant, Thunderbird 0.7 et suivant. Ici le terme extension indique les extensions (fonctionnalités supplémentaires) et les themes.
C'est un fichier zip qui va contenir tous les fichiers de votre extension ainsi que son descriptif. Il doit contenir l'arborescence suivante :
extension.xpi:
install.rdf
chrome/extension.jar
components/extension.dll
components/extension.js
defaults/extension.something
defaults/preferences/extension.js
Par rapport aux anciennes versions de firefox et de la suite Mozilla, il n'y a plus de fichier install.js. Si vous voulez rendre votre extension compatible avec la suite mozilla ou un vieux firefox, vous pouvez tout de même fournir ce fichier install.js.
le repertoire chrome : contient les fichiers jar de vos extensions (rappel : ces fichiers contiennent les fichiers xul, les themes etc de votre extension)
le repertoire components : contient vos composants XPCOM (fichiers *.xpt, *.js, *.dll ou *.so)
Le repertoire defaults : ???
Ce fichier permet au gestionnaire d'extension de spécifier les caractèristiques de votre extensions.
<?xml version="1.0"?>
<RDF:RDF [[xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#]]"
[[xmlns:em="http://www.mozilla.org/2004/em-rdf#"]]>
<RDF:Description RDF:about="[[urn:mozilla:install-manifest"]]>
<[[em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id]]>
<[[em:version>4.6</em:version]]>
<!-- Application à laquelle est destinée votre extension -->
<[[em:targetApplication]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>0.7</em:minVersion]]>
<[[em:maxVersion>1.2</em:maxVersion]]>
</RDF:Description>
</[[em:targetApplication]]>
<!-- Données principales de votre extension -->
<[[em:name>NewExt2</em:name]]>
<[[em:description>A]] test extension</[[em:description]]>
<[[em:creator>Joe]] Creator</[[em:creator]]>
<[[em:contributor>Jane]] Doe</[[em:contributor]]>
<[[em:homepageURL>http://www.bengoodger.com/</em:homepageURL]]>
<[[em:updateURL>http://www.bengoodger.com/software/mb/umo/update.rdf</em:updateURL]]>
<!-- Fichiers additionnels pour le gestionnaire d'extensions -->
<[[em:optionsURL>chrome://newext2/content/options.xul</em:optionsURL]]>
<[[em:aboutURL>chrome://newext2/content/about.xul</em:aboutURL]]>
<[[em:iconURL>chrome://newext2/skin/newext2.png</em:iconURL]]>
<!-- paquets, locale et skin que possède votre extension -->
<[[em:file]]>
<RDF:Description RDF:about="[[urn:mozilla:extension:file:newext2.jar"]]>
<[[em:package>content/newext2/</em:package]]>
<[[em:locale>locale/en-US/newext2/</em:locale]]>
<[[em:skin>skin/classic/newext2/</em:skin]]>
</RDF:Description>
</[[em:file]]>
<!-- extensions requises pour faire fonctionner votre extension -->
<[[em:requires]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>0.7</em:minVersion]]>
<[[em:maxVersion>1.2</em:maxVersion]]>
</RDF:Description>
</[[em:requires]]>
</RDF:Description>
</RDF:RDF>
<RDF:Description RDF:about="[[urn:mozilla:install-manifest"]]>
<[[em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id]]>
<[[em:version>4.6</em:version]]>
<em:id> contient un identifiant unique pour votre extension. Il peut être généré par des outils comme uuidgen sous unix ou guidgen sous windows. Il existe aussi sur le chanel irc #mozilla de mozilla.org (irc://irc.mozilla.org/mozilla) un bot qui peut vous le donner. Il suffit d'entrer /msg firebot uuid. <em:id> est obligatoire.
<em:version> est la version de votre extension. Voir le paragraphe spécifique plus loin pour les numéros de versions. <em:version> est obligatoire.
<[[em:targetApplication]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>0.7</em:minVersion]]>
<[[em:maxVersion>1.2</em:maxVersion]]>
</RDF:Description>
</[[em:targetApplication]]>
Cette section obligatoire indique à quelle application est déstinée l'extension. Vous devez y indiquer l'identifiant de cette application, ainsi que la version minimum et maximum avec lesquelles l'extension est compatible. Il est recommandé de toujours mettre la dernière version courante comme numero de version maximum, car vous ne savez pas comment l'application évoluera.
Voici les id des deux applications qui nous interressent :
<[[em:name>NewExt2</em:name]]>
<[[em:description>A]] test extension</[[em:description]]>
<[[em:creator>Joe]] Creator</[[em:creator]]>
<[[em:contributor>Jane]] Doe</[[em:contributor]]>
<[[em:homepageURL>http://www.bengoodger.com/</em:homepageURL]]>
<[[em:updateURL>http://www.bengoodger.com/software/mb/umo/update.rdf</em:updateURL]]>
Ces balises parlent d'elles-mêmes. Elles doivent contenir respectivement le nom, une description et l'auteur de l'extension, ainsi qu'une adresse d'un site où l'on peut trouver l'extension ou celle de l'auteur, et l'url d'un fichier update.rdf qui sert au gestionnaire d'extension pour savoir si une mise à jour est disponible (voir plus loin pour le contenu de update.rdf).
Seule <em:name> est obligatoire parmis ce groupe de balises.
<em:updateURL> peut contenir des motifs spécifiques qui seront remplacés par des valeurs correspondantes, par le gestionnaire d'extension : ; %ITEM_ID% : sera remplacé par l'id de l'extension installéeCela permet donc d'avoir un URL qui pointe, non pas vers un fichier update.rdf statique, mais vers un script (PHP par exemple) qui va générer dynamiquement le contenu d'un fichier update.rdf. On pourrait donc mettre :
<[[em:updateURL>http://www.foo.com/myext/update.php?id=%ITEM_ID%&version=%ITEM_VERSION%</em:updateURL]]>
D'autres balises optionnelles :
<[[em:optionsURL>chrome://newext2/content/options.xul</em:optionsURL]]>
<[[em:aboutURL>chrome://newext2/content/about.xul</em:aboutURL]]>
<[[em:iconURL>chrome://newext2/skin/newext2.png</em:iconURL]]>
Ces informations indiquent au gestionnaire d'extension la présence d'un fichier xul pour que l'utilisateur puisse paramètrer les options de l'extension, un fichier XUL affichant une boîte "à propos de ", et enfin d'une icône.
<[[em:file]]>
<RDF:Description RDF:about="[[urn:mozilla:extension:file:newext2.jar"]]>
<[[em:package>content/newext2/</em:package]]>
<[[em:locale>locale/en-US/newext2/</em:locale]]>
<[[em:skin>skin/classic/newext2/</em:skin]]>
</RDF:Description>
</[[em:file]]>
Cette section obligatoire déclare le contenu de chaque fichier .jar de votre extension. Vous y indiquez donc le repertoire content, les versions de localisation et les thèmes graphiques proposés.
<[[em:requires]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>0.7</em:minVersion]]>
<[[em:maxVersion>1.2</em:maxVersion]]>
</RDF:Description>
</[[em:requires]]>
Cette section obligatoire liste les extensions requises pour faire fonctionner votre extension. Cette section n'est pas utilisée dans Firefox 0.9 mais devrait l'être dans les versions futures.
Le numéro de version est important car il permet au gestionnaire d'extension de vérifier correctement la disponibilité des mises à jour. Ce numéro de version doit donc respecter une convention.
majeur.mineur.sousversion[+]
majeur, mineur et sousversion sont bien sûr des nombres entiers. Le + indique qu'il s'agit d'une version en développement, située entre deux versions stables. Chaque numero est facultatif. On peut donc mettre 1.2 ou 1.2.3 par exemple.
majeur.mineur.release.build[+]
majeur, mineur et release sont toujours des nombres entiers. Build est aussi un nombre. En général, il s'agit d'une date de "compilation" de la forme YYYYMMJJ. Cela permet de mieux distinguer les versions en développement. On ne doit pas mettre de lettre (pas de 1.0beta ou 2.3.5RC etc...).
Firefox a un système de mise à jour automatique. Régulièrement, il va vérifier qu'il n'existe pas de nouvelles versions pour les extensions installées. Il va alors récuperer le fichier update.rdf qui est indiqué dans la balise <em:updateURL>. Avec le contenu de ce fichier, il peut savoir si il existe une mise à jour ou pas.
Si la balise <em:updateURL> n'est pas présente, ce qui est le cas pour les extensions hébergées sur http://update.mozilla.org, il va interroger le site http://update.mozilla.org pour connaître les mises à jour dispo.
<RDF:RDF [[xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#]]"
[[xmlns:em="http://www.mozilla.org/2004/em-rdf#"]]>
<RDF:Description RDF:about="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}"]]>
<[[em:version>2.3</em:version]]>
<[[em:updateLink>http://www.mysite.com/fooextension2.3.xpi</em:updateLink]]>
</RDF:Description>
</RDF:RDF>
Le fichier update.rdf peut contenir des informations supplémentaires.
<RDF:RDF [[xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#]]"
[[xmlns:em="http://www.mozilla.org/2004/em-rdf#"]]>
<RDF:Description RDF:about="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}"]]>
<[[em:updates]]>
<!-- liste des mises à jour disponibles -->
<RDF:Seq>
<RDF:li RDF:resource="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}:2.2"/]]>
<RDF:li RDF:resource="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}:2.3"/]]>
</RDF:Seq>
</[[em:updates]]>
<!-- les 2 balises suivantes sont optionnelles. Elles ne sont là que pour la
compatibilité avec Firefox 0.9, dans le cas où votre extension est
compatible avec Firefox 0.9 -->
<[[em:version>2.3</em:version]]>
<[[em:updateLink>http://www.mysite.com/fooextension2.3.xpi</em:updateLink]]>
</RDF:Description>
<!-- This Description describes updates available to version 2.2 of
FooExtension - it defines a new maxVersion for the Firefox
targetApplication (format of the targetApplication object is the
same as for the install.rdf file, with the exception of the
[[em:updateLink]] property, which contains a URL to the updated XPI) -->
<RDF:Description RDF:about="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}:2.2"]]>
<[[em:version>2.2</em:version]]>
<[[em:targetApplication]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>0.9</em:minVersion]]>
<[[em:maxVersion>1.0</em:maxVersion]]>
<[[em:updateLink>http://www.mysite.com/fooextension2.2.xpi</em:updateLink]]>
</RDF:Description>
</[[em:targetApplication]]>
</RDF:Description>
<!-- This Description describes updates available to version 2.3 of
FooExtension - (format of the targetApplication object is the
same as for the install.rdf file, with the exception of the
[[em:updateLink]] property, which contains a URL to the updated XPI) -->
<RDF:Description RDF:about="[[urn:mozilla:extension:{8be6949b-76b9-4da7-b453-b5f69a11c76e}:2.3"]]>
<[[em:version>2.3</em:version]]>
<[[em:targetApplication]]>
<RDF:Description>
<[[em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id]]>
<[[em:minVersion>1.0</em:minVersion]]>
<[[em:maxVersion>1.0</em:maxVersion]]>
<[[em:updateLink>http://www.mysite.com/fooextension2.3.xpi</em:updateLink]]>
</RDF:Description>
</[[em:targetApplication]]>
</RDF:Description>
</RDF:RDF>
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.