Structure d'un paquet installable

 

Les applications XULRunner, les extensions et les thèmes partagent tous une structure de répertoire commune, et dans certains cas le même paquet peut être utilisé comme une application XULRunner indépendante aussi bien que comme une extension installable dans une autre application. La structure de base des paquets (bundles) peut contenir n'importe quels fichiers parmi ceux-ci :

/install.rdf                        Manifeste d'installation de thème/extension
/application.ini                    Manifeste de lancement de l'application
/components/*                       Fichiers XPT et composants .so/.dll/.js (>=1.7)
/defaults/preferences/*.js          Préférences par défaut              (>=1.7)
/plugins/*                          Plugins NPAPI                       (>=1.8)
/chrome.manifest                    Manifestes d'enregistrements chrome (>=1.8)
/chrome/icons/default/*             Icônes de fenêtre                   (>=1.8)

Bien sûr, une extension n'a pas besoin de (et normalement n'aura pas) tous ces répertoires. Les thèmes sont limités pour des raisons de sécurité et ne peuvent normalement fournir qu'un chrome.manifest enregistrant le thème et un fichier JAR.

 

Sous-répertoires spécifiques à une plateforme

Dans certains cas, une seule extension ou application peut avoir besoin d'inclure des composants binaires ou plugins pour plusieurs plateformes, ou des auteurs de thème peuvent vouloir inclure plusieurs fichiers JAR spécifiques à une plateforme. Pour faciliter les choses dans le premier cas, le chargeur d'extension/application possède des sous-répertoires spéciaux prévus spécialement pour les fichiers spécifiques à une plateforme (à partir du toolkit/Gecko 1.8, Firefox/Thunderbird 1.5). La chaîne de plateforme est définie au cours du processus de compilation du toolkit à une valeur unique pour la combinaison du système d'exploitation, l'architecture du processeur et le compileur. Le format de la chaîne de plateforme est :

{OS_TARGET}_{TARGET_XPCOM_ABI}

Tous les fichiers qui sont chargés depuis le répertoire principal de l'extension sont chargés depuis le sous-répertoire

/platform/{chaîne de plateforme}

si celui-ci existe. Par exemple, si un vendeur de plugin désire fournir un plugin aux utilisateurs de Linux, Macintosh et Windows, il fournira les fichiers suivants :

/platform/Linux_x86-gcc3/plugins/libMyPlugin.so
/platform/WINNT_x86-msvc/plugins/MyPlugin.dll
/platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
/platform/Linux_x86-gcc3/components/myComponents.so

Étant donné que les fichiers XPT ne dépendent pas de la plateforme, tous les éventuels fichiers XPT associés seront placés dans le répertoire de composants génériques :

/components/MyPlugin.xpt

Si une extension a du code spécifique à une plateforme non binaire (comme du code utilisant la base de registres de Windows depuis un script), elle peut aussi utiliser l'identifiant du système d'exploitation comme sous-répertoire de plateforme :

/platform/WINNT/components/registerDoctype.js

Lorsque des fichiers JAR spécifiques à une plateforme sont utilisés, chaque répertoire de plateforme doit avoir son propre fichier chrome.manifest :

chrome.manifest
chrome/mytheme-base.jar
platform/Darwin/chrome.manifest
platform/Darwin/chrome/mytheme-mac.jar
platform/WINNT/chrome.manifest
platform/WINNT/chrome/mytheme-win.jar

Le chargeur d'application/extension analyse d'abord le répertoire de base, puis les répertoires de plateforme applicables (d'abord /{OS_TARGET}/, ensuite /{OS_TARGET}_{TARGET_XPCOM_ABI}/). Lorsque les préférences par défaut sont définies dans plusieurs répertoires, ceux qui sont chargés en dernier ont priorité sur ceux chargés auparavant.

Fichiers d'extension spécifiques à une application

En plus des fichiers d'extension listés plus haut, les applications peuvent lire des fichiers supplémentaires depuis des extensions. Par exemple, Firefox 1.5 et supérieur cherchera les plugins de recherche Sherlock dans

/searchplugins/*.src

Firefox 2 (et supérieurs) recherchera également les plugins MozSearch et OpenSearch dans

/searchplugins/*.xml

ainsi que les dictionnaires Myspell dans

/dictionaries/*.{aff|dic}

Références officielles de l'API du toolkit

 

Étiquettes et contributeurs liés au document

Étiquettes :
Contributeurs ayant participé à cette page : Fredchat, VincentN, teoli, StripTM, BenoitL, Mgjbot, Yanmorin
Dernière mise à jour par : teoli,