如何更新自托管的 Firefox WebExtension

drt*_*tob 5 firefox firefox-addon-webextensions

如何将我的自行分发的 firefox webExtension 配置为自动更新,我已尝试遵循MDN 更新文档但仍然无法更新。我的网络扩展托管在子域名上,例如

https://files.example.com/myfile/extension.xpi

我的文件与我的文件updates.json位于同一位置.xpi

这是我的 update.json 的原型

{
  "addons": {
      "updates": [ { "version": "1.2",
          "update_link": "https://files.abc.com/myfiles/extension-1.2-an+fx.xpi" },
           { "version": "1.3",
          "update_link": "https://files.abc.com/myfiles/extension-1.3-an+fx.xpi" }
      ]
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我从浏览器控制台得到的乱码

1535658478365 addons.update-checker WARN onUpdateCheckComplete failed 
to parse update manifest: [Exception... "Update manifest is missing a 
required addons property." nsresult: "0x80004005 (NS_ERROR_FAILURE)" 
location: "JS frame :: 
resource://gre/modules/addons/AddonUpdateChecker.jsm :: 
getRequiredProperty :: line 120" data: no] Stack trace: 
getRequiredProperty()@resource://gre/modules/addons/AddonUpdateChecker.jsm:120
parseJSONManifest()@resource://gre/modules/addons/AddonUpdateChecker.jsm:130 onLoad()@resource://gre/modules/addons/AddonUpdateChecker.jsm:309 UpdateParser/<()@resource://gre/modules/addons/AddonUpdateChecker.jsm:241
Run Code Online (Sandbox Code Playgroud)

Pau*_*eil 1

您的“updates.json”似乎缺少加载项名称和 XPI 哈希。我还会在文件名中不使用“+”进行测试,我认为这引起了我的问题(由于托管服务器)。

要查看您的附加组件 UUID(例如“ADDONNAME@test.com”),请登录开发人员中心,单击编辑信息,然后查看技术信息。要生成 XPI 文件的 update_hash,我建议使用 VSCryptoHash,但任何其他生成加密哈希的程序都可以。

{
  "addons": {
    "ADDONNAME@test.com": {
      "updates": [
       { "version": "1.0.0",
         "update_link": "https://files.abc.com/myfiles/extension-1.2-fx.xpi" ,
         "update_hash": "sha256:blahblah" }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

控制台错误表明您的清单也缺少某些内容。这是一个基于我的有效示例。

"applications": {
    "gecko": {
        "id": "ADDONNAME@test.com",
        "strict_min_version": "50.0",
        "update_url": "https://webpage/Updatefile.json"
    }
},
Run Code Online (Sandbox Code Playgroud)