将外部安装的扩展设置为自动更新

本文适用于外部安装的扩展;也就是说,通过合作伙伴中心以外的方法分发的扩展;请参阅 分发扩展的替代方法。 本文不适用于使用合作伙伴中心开发人员仪表板发布的扩展;对于该分发方法,请参阅更新 Microsoft Edge 扩展

每隔几个小时,Microsoft Edge 检查每个已安装的扩展或应用是否具有更新 URL。 若要指定扩展的更新 URL,请使用 update_url 清单中的 字段。 update_url清单中的 字段指向可完成更新检查的位置。 对于每个 update_url,此 URL 发送对更新的清单 XML 文件的请求。 如果更新清单 XML 文件列出了较新的扩展或应用版本,Microsoft Edge 将下载并安装较新的版本。 相同的过程适用于手动更新,其中必须使用与当前安装的版本相同的私钥对新 .crx 文件进行签名。

为了维护用户隐私,Microsoft Edge 不会发送任何带有自动更新清单请求的 Cookie 标头,并忽略 Set-Cookie 对这些请求的响应中的任何标头。

将扩展设置为在用户计算机上自动更新时,扩展与 Microsoft Edge 共享以下优势:

  • 合并 bug 和安全修复。
  • 添加新功能或性能增强功能。
  • 改进用户界面。

Microsoft Edge 加载项网站托管扩展,你可以使用与 Microsoft Edge 相同的机制更新扩展。 你无法控制更新机制。

(以前支持非基于存储的扩展。此外,之前,你同时更新了本机二进制文件和扩展。)

重要

更新依赖于本机二进制文件的扩展时要小心。

更新 URL

如果托管自己的扩展或应用,则必须将 update_url 字段添加到文件中 manifest.json 。 以下代码片段显示了 字段的示例 update_url

{
  "name": "My extension",
  ...
  "update_url": "http://contoso.com/mytestextension/updates.xml",
  ...
}

更新清单

服务器返回的更新清单应为 XML 文档;例如:

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://contoso.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

更新的清单 XML 文件定义了以下属性:

属性 详细信息
appid 扩展 ID 基于公钥的哈希生成。 若要查找扩展的 ID,请打开 Microsoft Edge 并查看 edge://extensions
codebase 文件的 URL .crx
version Microsoft Edge 使用此属性值来确定它是否应下载 .crx 指定的 codebase文件。 它应与 文件文件中manifest.json的值version.crx匹配。

更新清单 XML 文件可以通过包含多个元素来包含有关多个 <app> 扩展的信息。

测试

Microsoft Edge 每隔几小时自动检查一次扩展更新。 若要立即更新扩展,请转到 edge://extensions,打开 “开发人员模式 ”切换,然后单击“ 更新 ”按钮。

高级用法:请求参数

使用参数进行更新的基本机制很简单。 若要自动更新扩展,请执行以下操作:

  1. 在 Web 服务器上上传静态 XML 文件,例如 Apache。
  2. 在发布新版本的扩展时更新 XML 文件。

利用添加到更新清单请求的某些参数指示扩展 IDversion这一事实。 可以将相同的 update URL 用于所有扩展,而不是静态 XML 文件。 若要对所有扩展使用相同的 update URL ,请指向运行测试参数的动态服务器端代码的 URL。

以下示例演示更新 URL 的请求参数的格式:

?x={extension_data}

在此示例中, {extension_data} 是使用以下格式的 URL 编码字符串。

id={id}&v={version}

例如,以下两个扩展都指向同一更新 URL http://contoso.com/extension_updates.php

  • 扩展 1
    • ID:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    • 更新 URL: http://contoso.com/extension_updates.php
    • 版本: 1.1
  • 扩展 2
    • ID:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    • 更新 URL: http://contoso.com/extension_updates.php
    • 版本: 0.4

以下示例是更新每个扩展的请求。

http://contoso.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
http://contoso.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

还可以在单个请求中列出每个唯一更新 URL 的多个扩展。 以下示例将前面的请求合并为单个请求:

http://contoso.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

如果发送单个请求,并且使用相同的更新 URL 的已安装扩展数过长,则更新检查发出更多GET请求。 GET如果请求 URL 大约为 2000 个字符,则请求 URL 太长。

在将来的版本中,可能会发出单个POST请求(正文中包含POST请求参数),而不是发出多个GET请求。

高级用法:最低浏览器版本

随着 Microsoft Edge 扩展系统的新 API 的发布,你可能希望发布更新版本的扩展或应用,该版本仅适用于较新版本的 Microsoft Edge。 Microsoft Edge 自动更新后,大多数用户可能需要几天时间才能更新到该新版本。

若要确保特定更新仅适用于当前或更新于特定版本的Microsoft Edge 版本,请在更新清单中添加 prodversionmin 属性。

例如,在以下代码中, prodversionmin3.0.193.0属性值指定仅当用户运行 Microsoft Edge 3.0.193.0 或更高版本时,应用才会自动更新为版本2.0

<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
  <app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
    <updatecheck codebase='http://contoso.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0' />
  </app>
</gupdate>

另请参阅

Chrome 开发文档:

注意

此页面的某些部分是根据 Google 创建和共享的作品所做的修改,并根据 Creative Commons Attribution 4.0 International License 中描述的条款使用。 原始页面位于此处

Creative Commons 许可证 本作品根据 Creative Commons Attribution 4.0 International License 获得许可。