Chrome 扩展程序的更新生命周期

本指南详细介绍了完整的扩展程序更新流程,涵盖标准更新流程、手动替换、开发者 API 以及企业政策的重大影响。

标准更新周期

Chrome 旨在自动将已安装的扩展程序更新到最新版本,确保用户能够使用新功能和安全修复程序。默认情况下,Chrome 会在启动时以及每隔几个小时检查一次扩展程序更新。

更新过程的一个关键方面是,只有当扩展程序被视为空闲时,才会安装更新。扩展程序要处于空闲状态,其组件不得处于活跃使用状态。在 Manifest V3 的上下文中,这主要意味着扩展程序的 Service Worker 未运行。Service Worker 采用事件驱动型设计,在一段时间不活动后会终止。此外,任何打开的扩展程序页面(例如侧边栏、弹出式窗口或选项页面)都会阻止扩展程序被视为处于空闲状态。有效的内容脚本不会影响扩展程序是否被视为处于空闲状态。

此闲置要求可能会导致频繁处于活动状态的扩展程序更新延迟。如果扩展程序的服务工作线程不断被事件触发,则可能永远无法达到空闲状态,并且更新会延迟到浏览器重启后进行。

监控扩展程序更新分发

如需了解有多少用户使用的是扩展程序的最新版本,请使用 Chrome 应用商店分析信息中心。前往 Chrome 应用商店开发者信息中心,然后选择您已发布的一款扩展程序。在侧边导航栏中,依次前往分析 -> 用户,然后向下滚动到按商品划分的每日用户数图表。您可以在此处查看有多少用户已在使用最新版本。

屏幕截图:显示了某个示例扩展程序的每日用户数(按版本)。

手动更新扩展程序

如果用户希望立即收到最新更新,Chrome 提供了一种手动更新机制。在测试更新时,这也是一个有用的工具。

个人用户可以按照以下步骤强制更新所有已安装的扩展程序:

  1. 前往 chrome://extensions。
  2. 使用右上角的切换开关启用开发者模式
  3. 点击随即显示的更新按钮。

此操作会促使 Chrome 立即从 Chrome 应用商店中提取所有已安装扩展程序的最新版本。

检查扩展程序是否有更新

chrome.runtime API 为扩展程序提供了与更新机制互动的工具。

按需检查更新

扩展程序可以使用 chrome.runtime.requestUpdateCheck() 函数以编程方式启动更新检查。对于严重依赖于后端服务且需要确保运行最新兼容版本的扩展程序,此功能尤其有用。

调用此函数时,Chrome 会向 Chrome 应用商店查询新版本,并在有新版本可用时下载该版本。该函数的回调会接收一个状态,指示检查结果。

监听可用更新

当更新已下载并准备好安装时,系统会触发 chrome.runtime.onUpdateAvailable 事件。此事件会在其详细信息中提供新版本号。通过监听此事件,扩展程序可以确定有更新可用,并考虑在适当的时候进入空闲状态或使用 chrome.runtime.reload() 导致重新加载。

以下代码展示了一个基本实现模式:

在特殊情况下,可以使用 chrome.runtime.requestUpdateCheck() 强制浏览器检查扩展程序更新:

请务必注意,频繁调用 requestUpdateCheck() 会受到浏览器的限制。仅在您知道有更新可用时才使用此函数。例如,当更新后的后端需要较新版本的扩展程序时。

通过企业政策控制更新

在受管理的企业环境中,标准扩展程序更新流程受系统管理员设置的政策的约束。这些政策可以替换默认行为,以强制执行安全性和稳定性。

强制安装

借助 ExtensionInstallForcelist 政策,管理员可以为用户静默安装特定扩展程序。用户无法停用或卸载通过此政策安装的扩展程序。

固定扩展程序版本

不过,企业通常需要控制所用扩展程序的具体版本,以确保与其他软件的兼容性。为此,管理员可以将扩展程序“固定”到特定版本。此操作通过 Google 管理控制台完成,管理员可以在其中为组织部门选择所需的版本。扩展程序固定后,Chrome 将不会将其更新到高于指定版本的版本。

替换更新源

出于安全或自定义方面的原因,企业可以托管自己的扩展程序分叉版本。为此,请使用 ExtensionSettings 政策,并将 override_update_url 属性设置为 true。o此政策会强制 Chrome 从指定网址(而非 Chrome 应用商店)提取扩展程序及其更新。

设置最低 Chrome 版本

您可以在扩展程序的清单文件中指定 minimum_chrome_version。这样可确保扩展程序仅安装在支持其所用 API 的 Chrome 版本上。

对于新安装,Chrome 应用商店会阻止使用旧版 Chrome 的用户安装该扩展程序,并显示“不兼容”消息。对于现有用户,如果扩展程序的更新将 minimum_chrome_version 提高到高于用户已安装的 Chrome 版本,他们将静默停止接收该扩展程序的更新。开发者应注意这一点,并告知用户群中可能受到影响的很大一部分用户。