Firefox外加程序自动更新设置
本文来自:https://developer.mozilla.org/zh-CN/Add-ons/Updates
由本人翻译提供。
Firefox 支持使用 JSON 升级清单描述文件自动升级扩展程序。 部署在 AMO 上的扩展程序能自动更新到最新版本, 其他的扩展程序必须明确说明它们的升级描述文件的位置。
一个典型的升级描述文件如下:
{
"addons": {
"addon@example.com": {
"updates": [
{ "version": "0.1",
"update_link": "https://example.com/addon-0.1.xpi" },
{ "version": "0.2",
"update_link": "http://example.com/addon-0.2.xpi",
"update_hash": "sha256:fe93c2156f05f20621df1723b0f39c8ab28cdbeec342efa95535d3abff932096" },
{ "version": "0.3",
"update_link": "https://example.com/addon-0.3.xpi",
"applications": {
"gecko": { "strict_min_version": "44" } } }
]
}
}
}
扩展程序升级
如果你的附加程序不是部署在AMO上, 你必须明确地说明你的附加程序升级清单文件的位置。 对于 WebExtensions,需要添加如下内容到你的清单文件中:
"applications": {
"gecko": {
"update_url": "https://example.com/updates.json"
}
}
对于 XUL 扩展程序,添加如下内容到install.rdf
文件的<Description about="urn:mozilla:install-manifest">
元素中:
<em:updateURL>https://example.com/updates.json</em:updateURL>
Manifest 结构
manifest 是一个使用顶级对象的JSON文件。 这个对象包含以下可能的属性:
addons |
object |
一个对象包含一个要升级的附加程序的实体。每一个实体的key必须是附加程序的ID,同时它的value必须是一个 addon objects 和它的updates。 |
Addon objects
addons[*]
每个addons对象的属性必须包含升级附加程序的描述对象集合。这对象有以下属性:
updates |
Array 可选
|
一个数据包含0个或多个附加程序的 update description objects 。 |
Update objects
addons[*].updates[*]
升级描述对象必须是对象集合,它们可以有以下属性:
version |
string |
附加程序的版本号。如果升级地址被指定,这个版本号必须存在。如果任何compatibility information被指定,它将用此版本号覆盖特殊信息中的版本号。 |
update_link |
string 可选
|
一个指向附加程序XPI文件的链接地址,它必须是HTTPS 地址,否则必须包含 update_hash 以便验证它。 |
update_hash |
string 可选
|
一个update_link指向的文件的Hash编码。 如果update_link不是HTTPS的地址时必须包含这个值。 如果出现,它必须是一个以 sha256: or sha512:开头的字符串 ,后面跟对应类型的16进制的hash编码。 |
update_info_url |
string 可选
|
一个包含升级说明信息的HTML文件的地址。 |
multiprocess_compatible |
bool 可选(default: true ) |
如果为false,这个附加程序必须要求 运行在 multi-process Firefox 环境. |
applications |
object 可选
|
一个包含 application-specific compatibility information的对象。每个属性必须包含一个 application object,它的描述如下。 包括 Firefox和其它构建于相同运行环境的应用, 如果这个属性被忽略,Gecko是支持的。另外,如果这个属性被定义,它必须包含一个gecko属性,否则这个升级实体将被忽略。 |
Application objects
addons[*].updates[*].applications.gecko
Application 对象为一个特定的应用指定合适的描述信息。 它们必须是一个对象集合,可以包含以下属性:
strict_min_version |
string 可选(default: 42.0a1 ) |
附加程序可以运行的最小版本号。 |
strict_max_version |
string 可选(default: * ) |
附加程序可以运行的最大版本号。 |
advisory_max_version |
string 可选(default: * ) |
附加程序运行最佳的最大版本号。此属性大部分情况被忽略。 |