从 Firefox 附加组件过渡到 WebExtensions:旧 Firefox 版本上的附加组件版本更新

Transitioning from Firefox add-on to WebExtensions: add-on version updates on older Firefox versions

我们有一个 Firefox 扩展,最近从 Firefox 附加组件架构移植到 "new" WebExtensions 架构,但是,我们有几个问题:

  1. 有一个错误阻止我们的扩展使用 WebExtensions 在 FF49 中工作。
  2. 我们希望在 https://addons.mozilla.org 上继续支持旧的附加组件版本,以支持使用旧版本 Firefox 的客户,包括 Firefox ESR,但也希望 WebExtensions 版本可供那些喜欢最新最好的浏览器版本。

我的问题是:我可以在 http://addons.mozilla.org/ 上使用特定版本的 Firefox 支持的多个扩展版本吗?即,我们扩展的版本 1 支持 FF <= 49;版本 2 支持 FF >= 50.

是的,您可以使用与指定范围的 Firefox 版本兼容的多个版本的附加组件。这种能力已经存在多年。

在您的 manifest.json 文件中,您可以指定 strict_min_version:

"applications": {
  "gecko": {
    "id": "addon@example.com",
    "strict_min_version": "42.0",
    "strict_max_version": "50.*",
    "update_url": "https://example.com/updates.json"
  }
}

但是,manifest.json 密钥需要 Firefox 45(用于 WebExtensions)。为应用程序指定最低和最高版本多年来一直适用于其他类型的附加组件。您还需要从 AMO Developer Hub.

手动管理每个附加组件版本的最大兼容 Firefox 版本

在 AMO Developer Hub 上,在附加组件的控制面板中,select "Manage Status & Versions"(彩色左侧菜单列表顶部的底部选项):

在您select"Manage Status & Versions"时显示的页面上,select您关注的版本。

在每个版本的附加组件页面上,您可以更改与 selected 版本的附加组件兼容的 Firefox 版本:

注意:根据我的经验,版本兼容性 selections 会影响自动安装的附加组件版本,设置最高版本不会阻止用户被提示安装,并且安装, 您的附加组件的最新版本 Firefox 版本高于为您的附加组件的最新版本指定的最高版本。此外,即使您手动设置了最高版本,AMO 也会根据自动化测试自动增加您附加组件的最新版本的最高 Firefox 版本。

然而,在其他类型的插件中,这应该可以通过 strictCompatibility entry in install.rdf 来控制。就我而言,在上传附加版本时(在现有的不兼容版本的 Firefox 之前),我并不知道与未来版本的 Firefox 不兼容。因此,我没有在 install.rdf 中设置该选项。对于 WebExtension,这应该可以通过 manifest.json.

中的 strict_max_version 键来控制

如果您将更新版本的加载项上传到 AMO,则无需担心这一点。根据附加组件 .xpi[=​​51=] [=61] 中包含的信息,您的附加组件版本与用户 运行 的 Firefox 版本兼容=] 如您在 AMO Developer Hub 控制面板中为每个版本指定的那样,应自动 selected 以供下载和安装。声明为与旧版 Firefox 不兼容的新版附加组件不应用于自动升级。

关于转换数据的附注:
您应该考虑发布 至少 一个使用 Embedded WebExtension 的附加组件版本,以便能够将存储在旧附加组件版本中的任何数据转换为 WebExtensions .