XULRunner应用,扩展,主题 都共享共同的目录结构,在某些情况下,一些包能被作于独立的XULRunner应用,就像一个可安装应用扩展。
包的基本结构
一个包可能包含下面的文件:
/install.rdf 扩展/主题安装manifest
/application.ini 应用启动Manifest
/components/* 组件及XPT文件 (>=1.7)
/defaults/preferences/*.js 默认首选项 (>=1.7)
/plugins/* NPAPI扩展 (>=1.8)
/chrome.manifest Chrome注册Manifest (>=1.8)
/chrome/icons/default/* 窗口图标 (>=1.8)
当然,一个扩展不需(通常没有)包含所有这些目录。由于安全原因主题有限,仅仅通常提供一个chrome.manifest来注册主题及一个JAR文件。
平台特定子目录
有些情况下,一个单一扩展或应用可能希望包含多平台的二进制组件或插件,或主题作者可能希望包含多平台相关的JAR文件。为了满足这些情况,扩展/应用装载有特定平台特定文件子目录(从Toolkit/Gecko 1.8, Firefox/Thunderbird 1.5开始)。平台字符串在toolkit编译时定义成组合操作系统,处理器结构及编译器的特有值。平台字符串的格式是:
{OS_TARGET}_{TARGET_XPCOM_ABI}
所有文件从主目录装载
/platform/{platform string}
比如,插件商想提供一个Linux,Macintosh,及windows的计算机客户,将提供下面的文件:
/platform/Linux_x86-gcc3/plugins/libMyPlugin.so /platform/WINNT_x86-msvc/plugins/MyPlugin.dll /platform/Darwin_ppc-gcc3/plugins/libMyPlugin.dylib
由于XPT文件是平台无关的,任何相关的XPT文件将放在一般的组件目录中:
/components/MyPlugin.xpt
如果一个扩展有非二进制平台相关代码(如使用了windows注册表脚本的代码),它也能使用操作系统表示作为平台子目录:
/platform/WINNT/components/registerDoctype.js
当用到平台相关的JAR文件 ,每个平台目录将有自己的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
应用/扩展装载器先处理基本目录,接着合适平台目录(先/{OS_TARGET}/, 然后
/{OS_TARGET}_{TARGET_XPCOM_ABI}/)。当默认首选项在多个子目录定义了,后来装载的覆盖前面的。
应用特定扩展文件除了上面列的扩展文件之外,应用可能从扩展读附加的文件。如,Firefox 1.5以上将读
Sherlock search插件从
/searchplugins/*.srcFirefox 2以上将额外读取MozSearch 和 OpenSearch插件从/searchplugins/*.xml及Myspell目录从/dictionaries/*.{aff|dic}