我的Firefox插件开发之旅(8)——插件的安装与更新(转载)

转载自:http://www.cppblog.com/epubcn/archive/2008/11/14/66912.html
【原创】我的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>[email protected]</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方面的技术细节文章。看心情吧,呵呵。

你可能感兴趣的:(我的Firefox插件开发之旅(8)——插件的安装与更新(转载))