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

本文適用於外部安裝的延伸模組;也就是說,透過合作夥伴中心以外的方法散發的擴充功能;請參閱 散發擴充功能的替代方式。 本文不適用於您使用 合作夥伴中心開發人員儀錶板發佈的延伸模組;如需該散發方法,請參 閱更新 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 延伸模組標識碼會根據公鑰的哈希產生。 若要尋找擴充功能的識別碼,請開啟 Microsoft Edge,並查看 edge://extensions
codebase 檔案的 .crx URL。
version Microsoft Edge 會使用這個屬性值來判斷是否應該下載 .crx 所指定的 codebase檔案。 它應該符合檔案.crx檔案中的 manifest.jsonversion

更新指令清單 XML 檔案可以包含多個延伸模組的相關信息,方法是包含多個 <app> 元素。

測試

Microsoft Edge 會每隔幾小時自動檢查擴充功能的更新。 若要立即更新擴充功能,請移至 edge://extensions,開啟 [ 開發人員] 模式 切換,然後按兩下 [ 更新] 按鈕。

進階使用方式:要求參數

使用參數更新的基本機制很簡單。 若要自動更新延伸模組:

  1. 在 Web 伺服器上上傳靜態 XML 檔案,例如 Apache。
  2. 當您發行新版本的擴充功能時,請更新 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
    • 識別碼: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    • 更新 URL: http://contoso.com/extension_updates.php
    • 版本: 1.1
  • 延伸模組 2
    • 識別碼: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
    • 更新 URL: 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

您也可以針對每個唯一的更新 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 Dev 檔:

注意事項

此頁面的部分是根據Google所建立和 共用的工作進行 修改,並根據 Creative Commons Attribution 4.0 國際授權中所述的條款使用。 您可以 在這裡找到原始頁面。

Creative Commons 授權 此工作是根據 Creative Commons Attribution 4.0 International License 授權