如何发布firefox扩展的更新

1 编写好更新的扩展2 如果第一次更新,则用mccoy创建key,注意保存;如果不是第一次更新,则使用现有的key,install项目中的install.rdf,也可以直接创建一个updateKey的子项,其值为mccoy的“Copy Public Key ”的值。3 将连install.rdf在内的项目打包,如lilac.xpi,计算lilac.xpi的sha1值,写入update.rdf的updateHash元素4 用mccoy sigh update.rdf5 将3中的lilac.xpi和4中的update.rdf上传到相应位置即可。

firefox 扩展更新

firefox扩展更新需要两个文件:install.rdf和update.rdf。前者是在xpi包中的,客户端用这个文件获得更新站点的信息,后者是放在服务器端,客户端每次检查更新的时候会下载这个文件,检查现在可用的版本号,然后下载。 firefox扩展更新有两种方式:http更新和https更新,两者区别在于更新的文件是通过http或是https传输。因为考虑到更新的时候存在中间人攻击(attack in the middle),所以推荐使用https更新,但是如果只需要http更新的话,那么需要给出updateKey来认证服务器的身份。 我还是讨论https更新吧,因为前者没有什么好说的:-) 一个典型的install.rdf和update.rdf如下: <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:#$mP9ic3" em:id=”{ec8030f7-c20a-464f-9b0e-13a3a9e97384}” em:minVersion=”1.5″ em:maxVersion=”3.0.*” /> <RDF:Description RDF:about="urn:mozilla:install-manifest" em:id=”surf.marvel@lilacbbs.com” em:name=”SurfLilac” em:version=”0.0.4″ em:creator=”marvel” em:contributor=”happygirl” em:description=”Surf on lilacbbs.com” em:homepageURL=”http://lilacbbs.com/surflilac/” em:iconURL=”chrome://surflilac/skin/surflilac.png” em:updateURL=”http://lilacbbs.com/surflilac/update.rdf” em:optionsURL=”chrome://surflilac/content/pref/pref-surflilac.xul” em:updateKey=”MIGfMA0GCSqGSIb3D4GNADCBiQKBgQDbbAD1IyiVmkbMbhSxK60cmGisUzorEvo98+Hs83ZPOYvrMteeYjf2HbnMSobYjjREWTO+DBdS0/HYisubtRXHlZU41ezBhFS00C3J2JiSWyY+HFjRz3vXQSfD5KpkzS2jMGPS0KL4aU9wU/P4Sq4QuhfZJVNVkBejdotr7zsb1wIDAQAB”> <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em=”http://www.mozilla.org/2004/em-rdf#”> … Continue reading