【问题标题】:Updating a Firefox addon fails on some machines在某些机器上更新 Firefox 插件失败
【发布时间】:2013-09-12 05:41:55
【问题描述】:

我们有一个 Firefox 插件,我们将其托管在我们自己的安全 (https) 服务器上。我们的插件总是第一次安装到当前版本的 Firefox 中而没有问题。但是,当发布新版本的插件并调用 Firefox 插件管理器的更新机制时,有些更新会成功,有些会失败。

到目前为止,我们无法确定导致随机故障的原因。我们希望有人能够查看我们的信息并能够看到我们遗漏的内容,并帮助我们解决这个问题。

这是我们的 RDF 文件...

<?xml version="1.0" encoding="utf-8"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
  <Description about="urn:mozilla:extension:jid1-aWPVzAyllHmjZg@jetpack">
    <em:updates>
      <Seq>
        <li>
          <Description>
            <em:version>2.0.27</em:version>
            <em:targetApplication>
              <Description>
                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                <em:minVersion>10.0</em:minVersion>
                <em:maxVersion>23.*</em:maxVersion>
               <em:updateLink>https://livehiveapp.com/product/extensions/ff/livehive.xpi</em:updateLink>
              </Description>
            </em:targetApplication>
          </Description>
        </li>
      </Seq>
    </em:updates>
  </Description>
</RDF>  

这是一台更新失败的机器的日志输出...

001 LOG addons.updates: Requesting https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=2&id={f13b157f-b174-47e7-a34d-4815ddfdfeb8}&version=0.9.89&maxAppVersion=14.0a1&status=userEnabled&appID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}&appVersion=23.0.1&appOS=WINNT&appABI=x86-msvc&locale=en-US&currentAppVersion=23.0.1&updateType=97&compatMode=normal
002 LOG addons.updates: Requesting https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=2&id=jid0-GXjLLfbCoAx0LcltEdFrEkQdQPI@jetpack&version=2.4.0.1&maxAppVersion=20.*&status=userEnabled&appID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}&appVersion=23.0.1&appOS=WINNT&appABI=x86-msvc&locale=en-US&currentAppVersion=23.0.1&updateType=97&compatMode=normal
003 LOG addons.updates: Requesting https://livehiveapp.com/product/extensions/ff/update_ff.rdf
004 LOG addons.updates: Found an update entry for jid1-aWPVzAyllHmjZg@jetpack version 2.0.27
005 LOG addons.updates: Found an update entry for {f13b157f-b174-47e7-a34d-4815ddfdfeb8} version 0.9.89
006 LOG addons.updates: Found an update entry for jid0-GXjLLfbCoAx0LcltEdFrEkQdQPI@jetpack version 2.4.0.1
007 LOG addons.xpi: Download started for https://livehiveapp.com/product/extensions/ff/livehive.xpi to file C:\Users\dstod\AppData\Local\Temp\tmp-i1t.xpi
008 LOG addons.xpi: Download of https://livehiveapp.com/product/extensions/ff/livehive.xpi completed.
009 LOG addons.repository: Requesting https://services.addons.mozilla.org/en-US/firefox/api/1.5/search/guid:jid1-aWPVzAyllHmjZg%40jetpack?src=firefox&appOS=WINNT&appVersion=23.0.1
010 LOG addons.xpi: Starting install of https://livehiveapp.com/product/extensions/ff/livehive.xpi
011 LOG addons.xpi: Addon jid1-aWPVzAyllHmjZg@jetpack will be installed as a packed xpi
012 LOG addons.xpi: Calling bootstrap method shutdown on jid1-aWPVzAyllHmjZg@jetpack version 2.0.23
013 Could not read chrome manifest 'file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/chrome.manifest'.
014 Could not read chrome manifest 'file:///C:/Program%20Files%20(x86)/Mozilla%20Firefox/browser/extensions/%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D/chrome.manifest'.
015 LOG addons.xpi: Calling bootstrap method uninstall on jid1-aWPVzAyllHmjZg@jetpack version 2.0.23
016 LOG addons.xpi: Loading bootstrap scope from C:\Users\dstod\AppData\Roaming\Mozilla\Firefox\Profiles\f1hj0mzi.default\extensions\jid1-aWPVzAyllHmjZg@jetpack.xpi
017 LOG addons.xpi: Calling bootstrap method install on jid1-aWPVzAyllHmjZg@jetpack version 2.0.23
018 LOG addons.xpi: Install of https://livehiveapp.com/product/extensions/ff/livehive.xpi completed.
019 LOG addons.xpi: Calling bootstrap method startup on jid1-aWPVzAyllHmjZg@jetpack version 2.0.23

在本例中,我们从 2.0.23 版升级到 2.0.27 版。请注意日志中正确的 RDF 文件是如何定位的(第 3 行)、正确识别新版本(第 4 行)以及成功下载新的 .XPI 文件(第 8 行)。然后旧版本 2.0.23 被关闭(第 12 行),并被卸载(第 15 行)。

这里似乎出了点问题:不是安装已下载的版本 2.0.27,而是再次重新启动版本 2.0.23(第 17-19 行),从而阻止了更新。没有记录错误,也没有任何线索说明为什么会发生这种奇怪的行为。

谁能解释这里可能发生的事情?

【问题讨论】:

  • 由于没有其他错误,我的赌注是浏览器仍然缓存livehiveapp.com/product/extensions/ff/livehive.xpi。尝试使用无缓存标头或更好的缓存验证器,或者为每个 XPI 版本设置唯一的 URI。
  • 您的建议竟然是答案!我们更改了 XPI 的 URL 以包含版本号以使其唯一,问题就消失了。谢谢你的建议。我如何评价您在评论中的回答?
  • 对答案发表评论。

标签: firefox firefox-addon rdf updates


【解决方案1】:

由于没有其他错误,很可能浏览器仍然在缓存中保存您的 XPI,因此不会下载新文件。

尝试使用 no-cache 标头或更好的缓存验证器和/或为每个 XPI 版本设置唯一的 URI。

【讨论】:

  • 明确地说,我们使用此信息通过为每个版本的插件创建唯一的 URL 来解决问题。这需要对我们的过程进行两个相对简单的更改(1)创建一个新的目录来放置新的 XPI,以及(2)在 RDF 文件中进行一行更改。特别是对于我们的最新版本 2.0.27,URL 已更改为 livehiveapp.com/product/extensions/ff/2027/livehive.xpi。该问题立即从所有以前发生故障的机器上消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-18
  • 2022-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多