Firefox扩展自动升级包制作


(1)通过http方式自动升级

1、处理安装配置脚本 install.rdf

在安装脚本中增加 <em:updateURL>标签 改URL指向一个文件为rdf或者xml的安装脚本文件,文件名可任意,确保改URL返回的head类型为text/rdf  text/xml 或者application/rdf +xml 否则浏览器端的updater checker无法识别,例如:


<em:updateURL>http://bijia.koudai.com/update/update.rdf<em:updateURL>

这里如果使用https连接 ,不需要指定updateKey,如果使用http必须指定updataKey, 其中 updateKey为生成的128位RSA公钥,例如 :

<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZ5Mu/g1zsI8LaXb6aJ10buZRFZpBBuEV53Y/NUrgwd3x+DUIN4z5lCrO6qlbY00SZtPIlx00/6PUwa8AcNN5GS1o/JhY06aslkzEWo4Oods1Bj47fe/p2JrjOWUdOddG8i/IRO665KlWWDKV2/M76VPiaSAXOID37CoTIeT+5QQIDAQAB </em:updateKey>


2、处理远程扩展更新脚本update.rdf

xml格式如下:

<?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:Seq RDF:about="rdf:#$2RO7w3">
    <RDF:li RDF:resource="rdf:#$3RO7w3"/>
  </RDF:Seq>
  <RDF:Description RDF:about="urn:mozilla:extension:{4BBDD651-70CF-4821-84F8-2B918CF89CA4}"
                   em:signature="MIGTMA0GCSqGSIb3DQEBDQUAA4GBAIYyJSscUM3uWCQIAkva69yko6suwBwVA/CeYzvkG/bj5y2N076NQYu6gAs18jphfA56vURSvJhPHp4R5yUSu8YVEoh8JTnwD0vZIzSs9DNLCzsZxDSJivKu3+d5yUrObRCsrNYkHpoNviuczfpb6i2752SD0XoIrc6EoMB/zG8/">
    <em:updates RDF:resource="rdf:#$2RO7w3"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$6RO7w3"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="1.5"
                   em:maxVersion="20.9a"
                   em:updateLink="http://bijia.koudai.com/update/koudaibijia.xpi"
                   em:updateHash="sha1:5794AF2CAAB91CD191B4DEFD1C814618EEB61C37" />
  <RDF:Description RDF:about="rdf:#$3RO7w3"
                   em:version="2.1.1">
    <em:targetApplication RDF:resource="rdf:#$6RO7w3"/>
  </RDF:Description>
</RDF:RDF>

说明:

    1、   其中,<RDF:Description about="urn:mozilla:extension:{4BBDD651-70CF-4821-84F8-2B918CF89CA4}"> 对于firefox扩展必须使用urn:mozilla:extension:为前缀,这是firefox扩展规定的前缀格式

    2、<updateInfoURL> 为对新版本的介绍的URL ,在扩展更新时在更新面板右侧提示相应的提示信息的作用

   3、<updateLink>为xpi扩展的URL,需要使用https链接时不需要指定updateHash元素,如果使用http://需要指定updateHash,这是为了保证xpi的完整性,

   另外对于updateHash还要加上对应的hash算法,这里使用的hash算法为sha1

  4、将前文的updateKey添加到signature中,例如te

5、然后再用mccoy 签发update.rdf(当update.rdf每变更一次,需要重新一次)

6、签发之后的update.rdf, 签名之后的em:signatue 数据会变,所以判断是否签名成功的鉴别方式是用mccoy签名update.rdf之后 文件会变,之前网上的说的那些em:signature跟install.rdf中的updatekey相同,那是瞎说,用mccoy签名之前是相同的,签名之后就不同了,


8、<RDF:targetApplication>之间的数据使用最新版的</RDF:targetApplication

9、<RDF:id></RDF:id>为firefox的唯一的ID,这个是Mozilla组织规定的唯一的标识,对于所有的扩展都是用统一的ID,


至此, firefox扩展自动更新的所需要的配置脚本和扩展升级包已经制作OK了,只需把相应的安装配置脚本和扩展包上传到服务器,用户关闭浏览器后再次打开会自动从updateURL地址中查找更新文件,通过比较相应的版本号,是否从网站上更新下载最新的扩展,这种请求方式可以通过ajax请求判断是否通过http://方式匹配相应的扩展包,再加入相应的扩展相应的APP ,没有



你可能感兴趣的:(脚本,url,扩展,firefox,extension,mozilla)