【问题标题】:Transitioning from Firefox add-on to WebExtensions: add-on version updates on older Firefox versions从 Firefox 插件过渡到 WebExtensions:旧 Firefox 版本上的插件版本更新
【发布时间】:2016-11-08 13:59:10
【问题描述】:

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

  1. 存在一个错误,导致我们的扩展无法使用 WebExtensions 在 FF49 中运行。
  2. 我们希望在https://addons.mozilla.org 上继续支持旧的附加组件版本,以支持使用旧版本 Firefox 的客户,包括 Firefox ESR,但也希望为喜欢最新最好的浏览器的用户提供 WebExtensions 版本版本。

我的问题是:我能否在 http://addons.mozilla.org/ 上提供多个版本的扩展程序,这些版本支持特定版本的 Firefox?即,我们的扩展版本 1 支持 FF = 50。

【问题讨论】:

    标签: firefox-addon firefox-addon-webextensions


    【解决方案1】:

    是的,您可以拥有多个版本的插件,这些版本与指定范围的 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 开发者中心的插件控制面板中,选择“管理状态和版本”(彩色左侧菜单列表顶部的底部选项):

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

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

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

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

    如果您将更新版本的插件上传到 AMO,则无需担心这一点。与用户运行的 Firefox 版本兼容的插件版本,基于插件的 .xpi 中包含的信息和/或您在 AMO 中指定的信息每个版本的开发者中心控制面板,应自动选择下载和安装。声明为与旧版本 Firefox 不兼容的新版本插件不应用于自动升级。

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

    【讨论】:

    • 出于好奇,您是否有使用 WebExtensions 版本更新 SDK 插件的具体经验?是否有具体的障碍/迁移提示?
    • 我还没有尝试更新 WebExtensions 的附加组件。我所有的公共附加组件都使用了 WebExtensions 中不存在且可能不会存在的功能。因此,我的 WebExtensions 体验目前仅包括一些尚未发布的附加组件(可能最终发布),以及 40-50 个左右,为测试和/或回答问题而创建的较小的测试扩展。但是,我确实有一个公共的非 WebExtension 插件,它与 Firefox 的确切版本非常相关。它必须针对许多(但不是全部)新版本的 Firefox 进行更新。因此,我已经处理了版本更新问题。
    • 我认为这个升级路径值得测试,但我还没有 AMO 帐户可以做这件事..
    • @Xan,我同意,进行测试以确认它特别适用于 WebExtensions 是个好主意。为解释 WebExtensions 添加的代码中总是可能存在错误。但是,对于其他类型的附加组件,该功能已经存在了很长一段时间。在过去几年中,Firefox 版本中出现了多个潜在的重大更改,其中许多附加组件都需要该功能。我缺乏测试是还提到最小/最大版本应该通过我已经使用/测试过的 AMO 开发者中心 UI 指定的主要原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多