(原创作品,转载请注明出处。)
插件写好了,下面就该做一个安装包了。最好再提供更新功能,以便在插件有更新的时候,及时通知用户进行插件更新。
我们开发的时候,直接将生成的dll丢到Firefox安装目录下的plugins目录就可以工作了,但是你如何说服让用户来手动完成这件事情?估计很难。因此,提供一个安装包,可能是最好的选择。用户只需要点几下鼠标就可以完成插件的安装了。
不过到写这篇文章的时候,我还不清楚怎么让安装包经过Mozilla的验证,因为没有经过验证的插件,在安装的时候会出现“仅安装信任作者的附加组件”提示对话框,提示用户仅安装受信任作者的插件。如果有人知道怎么去掉这个警告对话框,还望不吝赐教。
最最简单的插件安装包在这篇文章中开头处写的很清楚了:https://developer.mozilla.org/en/Shipping_a_plugin_as_an_extension
安装包的目录结构:
install.rdf
plugins/
pluginlib.dll
plugintypes.xpt
其中xpt文件可选。install.rdf的内容为:
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>mypluginid@myplugin.com</em:id>
<em:name>My Plugin</em:name>
<em:version>1.0</em:version>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>1.5</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
将上面内容安装目录结构用zip格式压缩,将后缀名改为xpi就OK了。
但是我们要做得事情远不止这些:
- 如何提供插件的更新自动通知?
- 如何将扩展和插件捆绑在一起让用户安装?(因为可能你不仅仅要安装插件,还希望在用户的FF工具栏或菜单上添加一些扩展功能)
- 如何对插件进行签名?
- 如何发布你的插件和扩展,以便让更多人知晓?
要做的事情还很多。那么我们就一个个来研究吧。
一、如何提供插件的更新自动通知?
关于Install manifest(即install.rdf)文件内容,Mozilla有篇很详细的文章:https://developer.mozilla.org/en/Install.rdf,可以进行参考。
其中有个节点名称是:updateURL。用这个标签包含一个可查询更新信息的URL连接,今后当FF在查询插件是否有更新时,会到你指定的这个URL上去查询。
这个URL可以是一个cgi程序、servlet、asp(x),也可以是一个固定的rdf文件链接。另外文章中也提到了另外一种办法:如果你没有提供updateURL,FF的附加组件管理器会向addons.mozilla.org发送请求,当你上传了一个新版本的插件或者通过作者接口(author interface)更改了兼容性参数,一个更新的manifest文件将会被自动产生。另外,Mozilla建议updateURL使用https而非http,否则你应该提供updateKey(可以用McCoy生成)。
那么,负责更新的rdf怎么编写呢?你可以参考这篇文章:https://developer.mozilla.org/en/Extension_Versioning%2c_Update_and_Compatibility#Update_RDF_Format。由于文章中写的很清晰,并且提供了详细的例子代码,这里我就不废话了。
二、如何将扩展和插件捆绑在一起让用户安装?
这个很简单。之前的章节我们已经做过一个简单的Extension安装包,如果想附加一个插件的话,只需要和chrome的同级目录下新建一个plugins目录,然后将dll及相关文件放在里面,最后一起打包即可。
当在FF中安装此xpi时,FF会将Extension和Plugin解压到FF的Profiles目录下。插件和扩展即可生效。
注意这里与我们之前将插件dll放在FF安装目录下的plugins目录下有些不同(至少位置不同),FF同样能够正确地识别我们的插件。另外Mozilla也推荐做成安装包,这样,在用户卸载组件的时候,可以同时将Extension和Plugin都卸载掉。
三、如何对插件进行签名?
很抱歉,还没找到答案……
四、 如何发布你的插件和扩展,以便让更多人知晓?
首先需要在Mozilla网站上注册一个账号(需要提供合法E-mail,因为要激活)。
登录后,在Mozilla 附加组件首页上你会看到一个“开发者工具”的链接。进入后,会有明显的导航链接,如“提交附加组件”。通过这个页面,按照向导,你就可以将你的插件发布出来了。剩下的事,就是宣传咯,呵呵。
OK,《我的Firefox插件开发之旅》系列文章就先到这里。将来我也许还会写一些关于编写FF的Extension和Plugin方面的技术细节文章。看心情吧,呵呵。