本文來自:https://developer.mozilla.org/zh-CN/Add-ons/Updates
由本人翻譯提供。
Firefox 支持使用 JSON 升級清單描述文件自動升級擴展程序。 部署在 AMO 上的擴展程序能自動更新到最新版本, 其他的擴展程序必須明確說明它們的升級描述文件的位置。
一個典型的升級描述文件如下:
{
"addons": {
"[email protected]": {
"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文件。 這個對象包含以下可能的屬性:
Property | Type | Description |
---|---|---|
addons |
object |
一個對象包含一個要升級的附加程序的實體。每一個實體的key必須是附加程序的ID,同時它的value必須是一個 addon objects 和它的updates。 |
Addon objects
addons[*]
每個addons對象的屬性必須包含升級附加程序的描述對象集合。這對象有以下屬性:
Property | Type | Description |
---|---|---|
updates |
Array 可選
|
一個數據包含0個或多個附加程序的 update description objects 。 |
Update objects
addons[*].updates[*]
升級描述對象必須是對象集合,它們可以有以下屬性:
Property | Type | Description |
---|---|---|
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 對象爲一個特定的應用指定合適的描述信息。 它們必須是一個對象集合,可以包含以下屬性:
Property | Type | Description |
---|---|---|
strict_min_version |
string 可選(default: 42.0a1 ) |
附加程序可以運行的最小版本號。 |
strict_max_version |
string 可選(default: * ) |
附加程序可以運行的最大版本號。 |
advisory_max_version |
string 可選(default: * ) |
附加程序運行最佳的最大版本號。此屬性大部分情況被忽略。 |