自動更新

基於 Google Chrome 本身的理由,我們希望擴充功能和應用程式會自動更新: 納入錯誤修正和安全性問題修正項目,加入新功能或效能提升項目, 存取 API

如果您使用 Chrome 開發人員資訊主頁發布應用程式,請忽略這個網頁。Chrome 網頁版 如果商店提交內容通過預覽,系統會自動將其顯示在擴充功能的 Chrome 線上應用程式商店項目資訊中,並提供給使用者。

如果您透過網路伺服器代管 CRX 檔案,並使用企業政策將該檔案推送至代管模式 繼續閱讀。此外,也建議您參閱「代管」和「封裝」這兩篇文章。

以前只要支援商店外的擴充功能,就能夠使用原生二進位檔 系統會在鎖定步驟中更新擴充功能不過,Chrome 線上應用程式商店代管的擴充功能 而且開發人員無法控制這項更新機制。開發人員應該 更新含有原生二進位檔 (例如 舊版擴充功能使用 NPAPI)。

總覽

  • 資訊清單中可以包含「update_url」欄位,指向要執行更新檢查的位置。
  • 更新檢查傳回的內容是更新資訊清單 XML 文件,其中列出 。

瀏覽器每隔幾小時就會檢查任何已安裝的擴充功能或應用程式是否擁有更新網址。適用對象 每個物件都會向該網址發出要求,尋找更新資訊清單 XML 檔案。如果更新 資訊清單中提到的版本比安裝的版本更新 安裝新版本。和手動更新一樣,您必須以相同的方式簽署新的 .crx 檔案 私密金鑰做為目前安裝的版本。

更新網址

如果自行代管擴充功能或應用程式,請在「更新網址」部分加上「update_url」是 manifest.json 檔案,如下所示:

{
  "name": "My extension",
  ...
  "update_url": "http://myhost.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://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
  </app>
</gupdate>

Google 的更新基礎架構 Omaha 已借用這個 XML 格式。詳情請見 http://code.google.com/p/omaha/。擴充功能系統會使用以下方法: 更新資訊清單中 元素的屬性:

appid

根據公開金鑰雜湊產生的擴充功能或應用程式 ID,詳情請見 包裝。如要查看擴充功能或 Chrome 應用程式的 ID,請前往「擴充功能」頁面 (chrome://extensions).

不過,代管的應用程式不會列在「擴充功能」頁面上。您可以使用 步驟如下:

  • 開啟應用程式。如要進行這項操作,請在「新分頁」中按一下對應的圖示。
  • 開啟 JavaScript 控制台。方法是按一下扳手圖示,然後選擇 [工具] > [ JavaScript 控制台
  • 在 JavaScript 控制台中輸入下列運算式:chrome.app.getDetails().id。 主控台會將應用程式的 ID 顯示為加引號的字串。
程式碼集

.crx 檔案的網址。

版本

供用戶端使用,以判斷是否應下載您所指定的 .crx 檔案。 codebase。它應該與「version」的值相符位於 .crx 檔案的 manifest.json 檔案中。

更新資訊清單 XML 檔案可能包含多個副檔名的資訊,方法是加入多個 元素。

測試

預設的更新檢查頻率為數小時,但您可以使用 擴充功能頁面的「立即更新擴充功能」按鈕。

進階用法:要求參數

基本的自動更新機制專用來簡化伺服器端作業,就如同 安裝到任何純文字伺服器 (如 Apache),並在發布時更新該 XML 檔案 新版擴充功能

更進階的開發人員可能會想利用我們為 要求更新資訊清單,以指出擴充功能 ID 和版本。接著,他們可以使用同樣的 更新所有擴充功能的網址,改為指向執行動態伺服器端程式碼的網址 靜態 XML 檔案的連結

要求參數的格式如下:

?x=_<extension_data>_

其中 _<extension_data>_ 是採用以下格式的網址編碼字串:

_id=<id>_&v=_<version>_

舉例來說,假設您有兩個額外資訊,且兩者都指向相同的更新網址 (http://test.com/extension_updates.php):

  • 擴充功能 1
    • ID:「aaaaaaaaaaaaaaaaaaaaaaaaaaaa」
    • 版本:「1.1」
  • 擴充功能 2
    • ID:"bbbbbbbbbbbbbbbbbbbbbbbb 更改</b]
    • 版本:「0.4」

更新個別擴充功能的要求將如下所示:

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

在每個專屬更新網址,單一要求中可以列出多則擴充內容。針對上述 舉例來說,如果使用者同時安裝這兩種擴充功能,系統會將這兩個要求合併為 單一要求:

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

如果使用同一個更新網址安裝的擴充功能數量夠大,因此發出 GET 要求 網址過長 (超過 2000 個字元),更新檢查會發出額外的 GET 要求, 無從得知

進階用法:瀏覽器版本最低需求

隨著我們新增更多 API 到擴充功能系統,您可能會想發布 適用於新版瀏覽器且僅適用於擴充功能或應用程式的擴充功能或應用程式。Google Chrome 會自動更新,可能需要幾天時間,才能滿足大部分使用者 更新為任何更新版本。確保特定更新只會套用至 Google Chrome 或是高於特定版本的新版本,請將「prodversionmin」屬性設定為 元素。例如:

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

這樣可確保只有在執行 Google Chrome 的情況下,使用者才會自動更新至第 2 版 3.0.193.0 以上版本。