共用方式為


設定外部安裝的擴充功能自動更新

本文適用於外部安裝的擴充功能;也就是說,透過非合作夥伴中心方式分發的擴展;參見「 其他分發擴充方式」。 本文不適用於你透過 合作夥伴中心開發者儀表板發佈的擴充功能;關於這種分發方式,請參見 更新 Microsoft Edge 擴充功能

每隔幾小時,Microsoft Edge 會檢查每個安裝的擴充功能或應用程式是否有更新網址。 要指定擴充功能的更新網址,請使用 update_url 清單中的欄位。 update_url清單中的欄位指向一個可以完成更新檢查的位置。 對於每個 update_url,此 URL 會發送更新的 manifest XML 檔案請求。 如果更新清單 XML 檔案列出了較新的擴充功能或應用程式版本,Microsoft Edge 會下載並安裝該新版本。 手動更新也適用同樣的流程,新 .crx 檔案必須以與目前安裝版本相同的私鑰簽署。

為了維護使用者隱私,Microsoft Edge 不會在自動更新清單請求中傳送任何 Cookie 標頭,且忽略這些請求回應中的標 Set-Cookie 頭。

當你設定擴充功能自動在使用者的電腦上更新時,你的擴充功能與 Microsoft Edge 共享以下優點:

  • 加入錯誤與安全修正。
  • 新增功能或效能提升。
  • 改善使用者介面。

你的擴充功能託管在 Microsoft Edge Add-ons,你可以用和 Microsoft Edge 相同的機制更新擴充功能。 你無法控制更新機制。

(過去支援非商店式擴充功能。另外,之前你是同時更新原生二進位檔和擴充功能。)

重要事項

更新依賴原生二進位檔的擴充功能時要小心。

更新網址

如果你自己架設擴充功能或應用程式,必須將該 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 檔案的網址 .crx
version 這個屬性值被 Microsoft Edge 用來判斷是否應該下載 .crx 指定的 codebase檔案。 它應該會和檔案中 manifest.json.crxversion值相符。

更新清單 XML 檔案可包含多個副檔名的資訊,包含多個 <app> 元素。

測試

Microsoft Edge 每隔幾小時自動檢查擴充功能的更新。 要立即更新擴充功能,請點選 edge://extensions,開啟 開發者模式 切換,然後點擊 更新 按鈕。

進階用法:請求參數

使用參數更新的基本機制很簡單。 要自動更新你的分機:

  1. 將你的靜態 XML 檔案上傳到你的網頁伺服器,例如 Apache。
  2. 隨著你釋出新版本的擴充功能,請更新 XML 檔案。

利用更新清單請求中新增的某些參數表示擴展IDversion與 的事實。 你可以用同樣 update URL 的擴充功能來設定所有擴充功能,而不是靜態的 XML 檔案。 要用同樣 update URL 的方法來管理所有擴充功能,請指向一個執行動態伺服器端程式碼的網址,測試參數。

以下範例展示了更新 URL 請求參數的格式:

?x={extension_data}

在這個例子中, {extension_data} 是一個以 URL 編碼的字串,採用以下格式。

id={id}&v={version}

例如,以下兩個擴充功能都指向相同的更新網址 http://contoso.com/extension_updates.php

  • 延伸線 1
    • ID: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    • 更新網址: http://contoso.com/extension_updates.php
    • 版本: 1.1
  • 延伸2
    • ID: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    • 更新網址: 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

你也可以在單一請求中列出每個獨特更新網址的多個擴充功能。 以下範例將先前的請求合併為單一請求:

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

如果你只發送一個請求,且使用相同更新網址的擴充功能數量過長,更新檢查就會發出更多 GET 請求。 GET如果請求網址大約是 2000 個字元,那就太長了。

未來版本中,可能不再發出多個 GET 請求,而是發出單一 POST 請求,請求參數則放在 POST 正文中。

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

隨著 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>

另請參閱

注意事項

本頁部分內容基於 Google 創作與 分享 的作品,並依 據創用CC 姓名標示 4.0 國際授權條款進行修改。 原始頁面 可在此查閱。

創用CC授權 本作品採用 創用CC 姓名標示4.0國際授權條款授權。