posts - 8, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Firefox plugin的安装与更新

Posted on 2009-05-19 13:20 eyesmart 阅读(3354) 评论(0)  编辑 收藏 引用 所属分类: Basic Knowledge


      上篇文章说了
firefox plugin在不同平台之间的构建,接下来写下如何安装。

       Pluginextension的安装都可采用xpinstall文件来安装。plugin文件在windows上为dlllinux上为so
mac os x上为bundleWindows版的plugin文件名要以np开头,否则firefox不会识别。首先在当前目录下新建
文件夹
pluginsinstall.rdf文件,将plugin文件放入plugins文件夹中,install.rdf文件是个xml格式,因此在各个
平台上的安装更新都没有差异性。在
https://developer.mozilla.org/en/Install_Manifests中,你可以获得rdf的一切
参数规则。给个范例:

<?xml version="1.0"?>

<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"

         xmlns:NC="http://home.netscape.com/NC-rdf#"

         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

 <RDF:Description RDF:about="urn:mozilla:install-manifest"

                   em:id="support@mypage.com"

                   em:name="myplugin"

                   em:version="1.0.0.1"

                   em:type="2"

                   em:description="mydescription"

                   em:creator="myname"

                   em:homepageURL="http://www.mypage.com"

                   em:updateURL="http://www.mypage.com/plugins/update.rdf"

                   em:updateKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMsAc9rp4UU0NDaR5oCGtN6JaHP
                                    3b9/Lkc7rZ2fCmXK5Ma5glpTrbqWAAijOc5v2H+BuXLPZaCdN/kjs+okPCeTcyzVuuP3XmV
                                    Fp+rAx49fDn9Rz0JldZiO5hvAygTK4bXRq7qegrxm/qYaunzs23E8W0tJ2LXHb5zqdswypXnZ
                                    wIDAQAB">

    <em:targetApplication RDF:resource="rdf:#$ZfNCh"/>

 </RDF:Description>

 <RDF:Description RDF:about="rdf:#$ZfNCh"

                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"

                   em:minVersion="2.0"

                   em:maxVersion="3.0.*" />

</RDF:RDF>

最下面这一段表示适用于firefox2.0版本到3.0.*的所有版本,可以修改这3个参数将plugin用于mozilla的其他
产品。

       编写完install.rdf后,将其与plugins文件夹一起打包成zip格式,并将zip后缀名改为xpi,然后只要给出xpi
URI,那么就可以安装xpi了。只要plugin编写正确,这里安装很容易成功的,然后再地址栏输入
about:plugins,
就能看见plugin的信息了。

       下面来看看如何更新,firefox插件更新有3种方式,第一是通过addons.mozilla.org进行更新,这种方式使
得你不需要对插件进行任何更新说明,因为
firefoxaddons网站会帮你完成所有的这一切,但这样必须要取
mozilla的许可才行,所以放弃。第二种方式是在install.rdf中添加updateURL,但要用https来进行更新,因
https要用到mozillaCA颁发的证书,配置起来太麻烦,也放弃。第三种办法是在install.rdf中添加
updateURL
,用http来进行更新,但是要用公钥的方式进行认证,所以加上updateKey这个字段,防止有
人用虚假的插件进行欺骗。
updateKey要用mozilla提供的mccoy进行生成,具体用法可以参考官方网站。

       update.rdf中列出了各个可用更新版本和其URL地址,范例如下:

<?xml version="1.0"?>

<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"

         xmlns:NC="http://home.netscape.com/NC-rdf#"

         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

 <RDF:Description RDF:about="rdf:#$3gNCh"

                   em:version="2.0.0.1">

    <em:targetApplication RDF:resource="rdf:#$6gNCh"/>

 </RDF:Description>

 <RDF:Seq RDF:about="rdf:#$2gNCh">

    <RDF:li RDF:resource="rdf:#$3gNCh"/>

 </RDF:Seq>

 <RDF:Description RDF:about="rdf:#$6gNCh"

                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"

                   em:minVersion="2.0"

                   em:maxVersion="3.0.*"

                   em:updateLink="http://www.mypage.com/plugins/npmyplugin.xpi"

                   em:updateHash="sha1:665ff233cfdcb5ed610555f7777a4961931873a3" />

 <RDF:Description RDF:about="urn:mozilla:extension:support@mypage.com"

                   em:signature="MIGTMA0GCSqGSIb3DQEBDQUAA4GBAJo4Sp+iJQSGesXd56BpDtTAWk0LcaSXKiK1+uo1pk
                        QFja+q6rJweNyu8A6o5zQmhIxOFsT0Oapz5KoATV8JilOmCJE8H+DjXUMYdaqzih0VPBZAAXE
                        wxphIN5ctnhwz2rN9nSGF18PSu7WuBIQIoWd1E0+ujf4+t/lnQCXqJHlK">

    <em:updates RDF:resource="rdf:#$2gNCh"/>

 </RDF:Description>

</RDF:RDF>

       updateHash是用来对要更新的文件的一个hash,这里用的算法是sha1,可以通过GNUsha1sum工具来生
成,最后要用
mccoy对这个文件进行签名。OK了,只要有新的版本就可以在firefox上进行更新了。如果更新
发生错误,那么就打开
about:config页面,修改其中的一个字段extensions.logging.enabledtrue,然后打开错
误控制台,这样就可以查看插件更新的具体错误了。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理