将外部安装的扩展设置为自动更新
本文适用于外部安装的扩展;也就是说,通过合作伙伴中心以外的方法分发的扩展;请参阅 分发扩展的替代方法。 本文不适用于使用合作伙伴中心开发人员仪表板发布的扩展;对于该分发方法,请参阅更新 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
,打开 “开发人员模式 ”切换,然后单击“ 更新 ”按钮。
高级用法:请求参数
使用参数进行更新的基本机制很简单。 若要自动更新扩展,请执行以下操作:
- 在 Web 服务器上上传静态 XML 文件,例如 Apache。
- 在发布新版本的扩展时更新 XML 文件。
利用添加到更新清单请求的某些参数指示扩展 ID
和 version
这一事实。 可以将相同的 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
- ID:
- 扩展 2
- ID:
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
- 更新 URL:
http://contoso.com/extension_updates.php
- 版本:
0.4
- ID:
以下示例是更新每个扩展的请求。
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
属性。
例如,在以下代码中, prodversionmin
的3.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 Attribution 4.0 International License 获得许可。