我的玻璃盒子

【原创】我的Firefox插件开发之旅(8)——插件的安装与更新

(原创作品,转载请注明出处。)

插件写好了,下面就该做一个安装包了。最好再提供更新功能,以便在插件有更新的时候,及时通知用户进行插件更新。

我们开发的时候,直接将生成的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方面的技术细节文章。看心情吧,呵呵。

posted on 2008-11-14 13:57 深蓝色系统 阅读(10267) 评论(4)  编辑 收藏 引用 所属分类: Firefox开发

评论

# re: 我的Firefox插件开发之旅(8)&mdash;&mdash;插件的安装与更新 2008-11-19 16:46 大笨猫

赞一个.
博主能否把这些文章和自己开发FF插件的经验整理成电子书.
这方面的中文资料实在太少了.  回复  更多评论   

# 呵呵,我帮作者把文章做成电子书 2009-01-15 19:04 loen

http://122.136.32.26/d/fid/8e457e1399fc1530986ea6f23cb0f39d95baedfa4baa0000/sid/e828f90b3f9eb215c7ebb7/fn/%E6%88%91%E7%9A%84Firefox%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E4%B9%8B%E6%97%85.chm  回复  更多评论   

# re: 【原创】我的Firefox插件开发之旅(8)&mdash;&mdash;插件的安装与更新 2009-12-08 18:29 zxca

三、如何对插件进行签名?

很抱歉,还没找到答案……

嘻嘻,我帮你找到了:
https://developer.mozilla.org/en/Signing_a_XPI  回复  更多评论   

# re: 【原创】我的Firefox插件开发之旅(8)&mdash;&mdash;插件的安装与更新 2009-12-11 15:30 ,

20.5万,金山软件Office插件开发大赛 任务悬赏金额:205000元 时间:79天 任务地址:http://www.zhubajie.com/task/iv/170046  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

统计

常用链接

留言簿(75)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜