(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"?>说明:
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 ,没有