Firefox插件无法识别Update.rdf文件中的新版本

时间:2012-06-28 14:15:47

标签: firefox firefox-addon rdf add-on

我使用McCoy tool来“安装”我的install.rdf文件并签署我的update.rdf文件。

在我的Install.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="rdf:#$e2DK."
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0"
                   em:maxVersion="15.*" />
  <RDF:Description RDF:about="urn:mozilla:install-manifest"
                   em:id="{ext-id}"
                   em:type="2"
                   em:name="Ext X"
                   em:version="1.0.4"
                   em:description="..."
                   em:creator="Bruno Leonardo Michels"
                   em:updateURL="http://www.example.com/dl/update.rdf"
                   em:bootstrap="false"
                   em:updateKey="xxx">
    <em:targetApplication RDF:resource="rdf:#$e2DK."/>
  </RDF:Description>
</RDF:RDF>

在我的Update.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="rdf:#$D1abg"
                   em:version="1.0.4">
    <em:targetApplication RDF:resource="rdf:#$G1abg"/>
  </RDF:Description>
  <RDF:Description RDF:about="rdf:#$G1abg"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0"
                   em:maxVersion="15.*"
                   em:updateLink="http://www.example.com/dl/ext.xpi"
                   em:updateInfoURL="http://www.example.com/dl/ext.txt" />
  <RDF:Description RDF:about="rdf:#$M1abg"
                   em:version="1.0.3">
    <em:targetApplication RDF:resource="rdf:#$P1abg"/>
  </RDF:Description>
  <RDF:Description RDF:about="urn:mozilla:extension:{ext-id}"
                   em:signature="xxx">
    <em:updates RDF:resource="rdf:#$C1abg"/>
  </RDF:Description>
  <RDF:Seq RDF:about="rdf:#$C1abg">
    <RDF:li RDF:resource="rdf:#$D1abg"/>
    <RDF:li RDF:resource="rdf:#$M1abg"/>
  </RDF:Seq>
  <RDF:Description RDF:about="rdf:#$P1abg"
                   em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
                   em:minVersion="4.0"
                   em:maxVersion="15.*"
                   em:updateLink="http://www.example.com/dl/ext103.xpi"
                   em:updateInfoURL="http://www.example.com/dl/ext.txt" />
</RDF:RDF>

当我点击“查找更新”时,Firefox会请求update.rdf url并使用正确的版本(1.0.4)检索正确的文件。但它没有做任何事情,没有显示任何更新,也没有更新...它只是停留在版本1.0.3 ......

em:version是什么决定了插件的版本?我在这里缺少什么?

要测试我安装并签署了版本1.0.4并将版本更改为已安装和签名的1.0.3,因此我有两个版本,其中包含不同的编号。我安装了版本1.0.3,我正在尝试通过更新1.0.4

1 个答案:

答案 0 :(得分:1)

由于我没有使用https,我必须在em:updateHash文件的em:updateLink下加update.rdf。我使用了从Hashtab生成的SHA1。

em:updateHash="sha1:<hash>"

添加哈希后,您必须再次对该文件进行签名。