firefox-addon - 从 Firefox 附加组件过渡到 WebExtensions : add-on version updates on older Firefox versions

标签 firefox-addon firefox-addon-webextensions

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

  • 有一个错误阻止我们的扩展程序使用 WebExtensions 在 FF49 中工作。
  • 我们希望在 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 开发人员中心,在您的附加组件的控制面板中,选择“管理状态和版本”(左侧彩色菜单列表顶部的底部选项):
    AMO Menu selection

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

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

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

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

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

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

    关于firefox-addon - 从 Firefox 附加组件过渡到 WebExtensions : add-on version updates on older Firefox versions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40488822/

    相关文章:

    firefox-addon - 为什么 Mozilla Firefox 的扩展(附加组件)会自动删除?

    javascript - 如何监听 XMLHttpRequests - 浏览器扩展

    javascript - 在 Firefox 扩展弹出窗口中执行 javascript

    xml - 如何访问正确的 XUL 缩放更改值

    javascript - 火狐网页扩展 "selectionchange"

    javascript - 是否可以在内容脚本中使用 onHistoryStateUpdated 事件?

    javascript - 如何使用 fetch 在 firefox 或 chrome 扩展程序中获取网页的 HTML 源代码?

    javascript - 需要 ("sdk/window/utils").windows() 的私有(private)窗口

    android - 在 Firefox for Android 版本 42 或更新版本中安装未签名的 XPI

    javascript - 在 PageMod 的 HEAD 标签顶部插入脚本(Firefox Add-on SDK)