现在的位置: 首页 > 综合 > 正文

【Firefox扩展】一个xpi的目录结构

2013年10月22日 ⁄ 综合 ⁄ 共 1787字 ⁄ 字号 评论关闭

xpi文件就是firefox能够识别的扩展文件,将xpi安装到firefox的方法比较多,而且挺简单的,以后介绍。

将xpi文件以WinRAR或者WinZip打开并解压,可以得到如下目录结构:
/chrome
/components
/defaults
/install.js
/install.rdf
/chrome.manifest
这是顶层的目录结构,在chrome目录下还会有重要的东西,逐一介绍:
        chrome是Mozilla 规定扩展必须具备的目录,其中包含一个jar文件,为什么是jar呢?天知道Mozilla为什么要和Sun的Java这样纠缠不清!而实际上,他只是作为一种压缩结构而存在,就像zip包,rar包一样,只不过他是以Zip为压缩包结构,以.jar为扩展名。这个包里保存着完成扩展主要功能的文件。
        components文件夹用于存放自定义的 XPCOM 组件文件,就是将xpt和dll文件放在里面,上一片blog里说的install.js放在外面~。由于javascript功能还是挺强大的,一般简单的功能是可以完成的,所以这个目录是可选的,我现在在做的项目要用通过xpcom使用一些别的库,所以就要用到xpcom,就会有这个目录。
        defaults据说是负责存放一些默认的设置数据,我们现在正在做调研,东西做的还比较简单,没用到这个文件夹,当然这个文件夹也是可选的。
        install.js文件,作为一种安装脚本,他已经被Mozilla新的技术所代替,就是我们看到的另一个文件——install.rdf,但是这个js文件还是有他的作用的,比如将components文件夹里的xpt和dll通过xpinstall的api搬运到firefox的特定文件目录中去。
        install.rdf文件,用于描述当前扩展的注册信息和附加信息等。在firefox的扩展软件中找到我们安装的扩展,右键点出关于,about对话框里的信息都是出自这个文件,安装扩展的时候,firefox会自动分析这个文件,提取例如扩展名,版本号,作者之类的信息到系统中。
        chrome.manifest文件负责将扩展的各种包注册到 Mozilla 的 chrome 系统中。可以理解为一个注册文件。

        再来说一下chrome文件夹里的内容——jar文件包,解压这个包会得到三个目录:
/content
/local
/skin
        content用于存放overlay或者Dialog、window这样的xul文件和负责控制逻辑响应事件的javascript文件。这个文件夹是必不可少的,我们扩展的核心内容就在这个文件夹中。
        local是本地化文件夹,当我们想支持多语言的时候,会用的到,由于我们要做对英语和日语的支持,说以会用到这个文件夹下的内容,以后会详细介绍的。
        skin文件夹是用于存储负责美化界面外观的样式表文件和图片文件,这些文件中的样式和图片会被 content 目录中的文件所引用,这点是初学者很不容易搞定的!content文件夹下的xul文件会用到!他们定义一个标示(ID),然后在本文件中什么也不做了!这点让我郁闷了一个上午,找啊找,翻啊翻的,结果在skin文件夹下的css文件中找到了!而css文件像一个桥梁一样,将skin中的图片文件与xul中的标签联系在一起!这个下一篇blog介绍。

       这样,一个xpi的基本目录就介绍完了!搞不明白为什么要分这老些文件夹,但是将content(实现)和skin(资源)分开会有他的好处的,至少很清晰!
       做最简单的扩展你只需要这样的目录结构:
                /chrome
                      ---/content
                                 ---/XXX.xul和XXX.js
                /install.rdf
                /chrome.manifest
       其实要做一个简单的扩展也不会那么难,以后的4篇blog我会依次介绍如何简单扩展我们可爱的firefox,状态栏,工具栏,菜单,还有定制工具栏那个面板。

抱歉!评论已关闭.