Firefox addon 从Firefox插件到WebExtensions的转换:旧Firefox版本上的插件版本更新

Firefox addon 从Firefox插件到WebExtensions的转换:旧Firefox版本上的插件版本更新,firefox-addon,firefox-addon-webextensions,Firefox Addon,Firefox Addon Webextensions,我们有一个Firefox扩展,最近从Firefox插件架构移植到“新”WebExtensions架构,但是,我们有两个问题: 有一个bug阻止我们的扩展使用WebExtensions在FF49中工作 我们希望保留对旧附加组件版本的支持,以支持使用旧版本Firefox(包括Firefox ESR)的客户,但也希望让那些喜欢最新和最好浏览器版本的客户可以使用WebExtensions版本 我的问题是:我可以在上提供多个版本的扩展,这些扩展支持特定版本的Firefox吗?i、 例如,我们的扩展版本1支

我们有一个Firefox扩展,最近从Firefox插件架构移植到“新”WebExtensions架构,但是,我们有两个问题:

  • 有一个bug阻止我们的扩展使用WebExtensions在FF49中工作
  • 我们希望保留对旧附加组件版本的支持,以支持使用旧版本Firefox(包括Firefox ESR)的客户,但也希望让那些喜欢最新和最好浏览器版本的客户可以使用WebExtensions版本

  • 我的问题是:我可以在上提供多个版本的扩展,这些扩展支持特定版本的Firefox吗?i、 例如,我们的扩展版本1支持FF=50。

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

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

    但是,manifest.json键需要Firefox45(用于WebExtensions)。为应用程序指定最低和最高版本已经为其他类型的附加组件提供了多年。您还需要从中手动管理每个插件版本的最大兼容Firefox版本

    在AMO Developer Hub上,在附加组件的控制面板中,选择“管理状态和版本”(左侧彩色菜单列表顶部的底部选项):

    在选择“管理状态和版本”时显示的页面上,选择您关心的版本

    在每个插件版本的页面上,您可以更改与所选插件版本兼容的Firefox版本:

    注意:根据我的经验,版本兼容性选择将影响自动安装外接程序的哪个版本,但设置最大版本不会阻止用户进行安装和安装,Firefox版本中加载项的最新版本,该版本晚于为加载项的最新版本指定的最大版本。此外,AMO将根据自动测试自动增加插件最新版本的最大Firefox版本,即使您手动设置了最大版本

    但是,在其他类型的附加组件中,这应该能够通过进行控制。在我的例子中,我在上传附加版本时(在现有Firefox的不兼容版本之前)没有意识到与Firefox的未来版本不兼容。因此,我没有在install.rdf中设置该选项。对于WebExtension,这应该能够通过manifest.json中的
    strict\u max\u version
    键进行控制

    如果您有更新版本的加载项上传到AMO,您不必担心这一点。根据加载项的.xpi中包含的信息和/或您在AMO Developer Hub控制面板中为每个版本指定的信息,应自动选择与用户运行的Firefox版本兼容的加载项版本进行下载和安装。声明与旧版本Firefox不兼容的新版本加载项不应用于自动升级

    关于转换数据的旁注:

    你应该考虑释放你的插件的至少一个版本,它使用一个能够将你存储在旧插件版本中的任何数据转换成WebExpExcess。

    出于好奇,你有没有使用WebExchange版本更新SDK插件的具体经验?是否有具体的障碍/迁移提示?我还没有尝试更新WebExtensions的附加组件。我的所有公共加载项都使用WebExtensions中不存在、也可能不存在的功能。因此,我的WebExtensions体验目前只包括一些尚未发布的附加组件(可能最终发布),以及为测试和/或回答这里的问题而创建的大约40-50个较小的测试扩展。然而,我有一个公共的非WebExtension插件,它与Firefox的确切版本紧密相连。它必须对许多(但不是所有)新版本的Firefox进行更新。因此,我已经处理了版本更新问题。我认为这一升级路径需要进行测试,而且我还没有AMO帐户来进行测试。@Xan,我同意,进行测试以确认它特别适用于WebExtensions是一个好主意。为解释WebExtensions而添加的代码中总是可能存在bug。但是,对于其他类型的附加组件,该功能已经存在了相当长的一段时间。在过去几年中,Firefox版本中出现了多个潜在的突破性变化,许多附加组件都需要这种功能。我的缺乏测试也是我提到最小/最大版本也应该通过AMO开发者中心UI指定的一个主要原因,我已经使用/测试了AMO开发者中心UI。
    "applications": {
      "gecko": {
        "id": "addon@example.com",
        "strict_min_version": "42.0",
        "strict_max_version": "50.*",
        "update_url": "https://example.com/updates.json"
      }
    }