在 Linux 系統中,Chrome 使用者可以安裝非託管於
Chrome 線上應用程式商店本文說明如何封裝、代管及更新 crx
來自一般用途網路伺服器的檔案如果您僅發布擴充功能或主題
請透過 Chrome 線上應用程式商店諮詢線上應用程式商店代管服務,
更新中。
套件
擴充功能和主題會以 .crx
檔案的形式提供。透過 Chrome Developer 上傳時
資訊主頁,資訊主頁就會自動建立 crx
檔案。如已發布
如果是個人伺服器,crx
檔案必須在本機建立,或透過 Chrome 下載
。
前往 Chrome 線上應用程式商店下載 .crx
如果擴充功能是由 Chrome 線上應用程式商店代管,您可以透過 Chrome 線上應用程式商店下載 .crx
檔案
開發人員資訊主頁。在「你的資訊」下方找出擴充功能並點選 [更多資訊]在
彈出式視窗,按一下藍色的 main.crx
連結即可下載。
下載的檔案可以代管於個人伺服器。如要以最安全的方式代管 做為擴充功能的內容,因此 Chrome 線上應用程式商店會自行簽署。這個 可協助偵測潛在的攻擊和竄改行為
在本機建立 .crx
擴充功能目錄會在「擴充功能管理」頁面轉換為 .crx
檔案。前往
按一下網址列中的 chrome://extensions/
,或按一下 Chrome 選單,將遊標懸停在「更多工具」上。然後
選取「擴充功能」
在「擴充功能管理」頁面上,按一下 開發人員模式:然後選取「PACK EXTENSION」按鈕。
在「擴充功能根目錄」欄位中指定擴充功能資料夾的路徑,然後按一下 [封裝擴充功能] 按鈕,忽略首次套件的「Private key」欄位。
Chrome 會建立兩個檔案:一個 .crx
檔案和一個 .pem
檔案,其中包含擴充功能的
私密金鑰
請勿遺失私密金鑰!將 .pem
檔案保存在安全的地方。將會是
必須更新擴充功能。
更新 .crx 套件
如要更新擴充功能的 .crx
檔案,請在 manifest.json
中增加版本號碼。
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
返回「擴充功能管理」頁面,然後按一下「包包擴充功能」按鈕。請指定 擴充功能目錄的路徑,以及私密金鑰的位置。
頁面會提供已更新封裝擴充功能的路徑。
透過指令列封裝
叫用 chrome.exe
,在指令列中封裝擴充功能。使用「--pack-extension
」
旗標指定擴充功能資料夾的位置,並將 --pack-extension-key
旗標設為
指定擴充功能私密金鑰檔案的位置。
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
主機
代管 .crx
檔案的伺服器必須使用適當的 HTTP 標頭,才能允許使用者安裝
。
如果符合下列情況,Google Chrome 會將檔案視為可安裝:
- 檔案的內容類型為
application/x-chrome-extension
- 檔案後置字串為
.crx
,且同時符合下列兩個條件:- 這個檔案「未」透過 HTTP 標頭
X-Content-Type-Options: nosniff
提供 - 這類檔案會搭配下列其中一種內容類型提供:
- 空字串
"text/plain"
"application/octet-stream"
"unknown/unknown"
"application/unknown"
"\*/\*"
- 這個檔案「未」透過 HTTP 標頭
無法識別可安裝檔案最常見的原因,就是伺服器會將
標頭 X-Content-Type-Options: nosniff
。第二個最常見的原因是
未知的內容類型— 一個不在上述清單中。如要修正 HTTP 標頭問題,請
伺服器的設定,或嘗試在其他伺服器代管 .crx
檔案。
更新
瀏覽器每隔幾小時就會檢查已安裝的擴充功能是否有更新網址。每個 Pod 都會 要求給該網址,尋找更新資訊清單 XML 檔案。
- 更新檢查傳回的內容是更新資訊清單 XML 文件,其中列出 。
如果更新資訊清單提及的版本比安裝版本還新,瀏覽器
下載並安裝新版本和手動更新一樣,您必須簽署新的 .crx
檔案
私密金鑰與目前安裝的版本相同。
更新網址
如果擴充功能是由 Chrome 線上應用程式商店以外的伺服器代管,請務必在路徑中加入 update_url
欄位
對方的 manifest.json
檔案。
{
"name": "My extension",
...
"update_url": "https://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='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
Google 的更新基礎架構 Omaha 已借用這個 XML 格式。
擴充功能系統會將以下屬性的 <app>
和 <updatecheck>
元素
更新資訊清單:
- appid
- 擴充功能 ID 會根據公開金鑰的雜湊產生,如封裝一節所述。擴充功能的 ID 會顯示在「擴充功能管理」頁面。
- 程式碼集
.crx
檔案的 HTTPS 網址。- 版本
- 供用戶端使用,以便判斷是否應下載
codebase
指定的.crx
檔案。它應該與「version」的值相符位於.crx
檔案的manifest.json
檔案中。
更新資訊清單 XML 檔案可能包含多個副檔名的資訊,方法是加入多個
<app>
元素。
測試
預設的更新檢查頻率為數小時,但您可以使用更新 擴充功能管理頁面按鈕。
系統將開始檢查所有已安裝的擴充功能。
進階用法:要求參數
基本的自動更新機制是為了讓伺服器端正常運作,如同 安裝到任何純文字伺服器 (如 Apache),然後將該 XML 檔案更新為 發布擴充功能版本。
代管多個擴充功能的開發人員可能會檢查要求參數 (指出擴充功能 ID) 更新要求中的版本和版本只要加入這些參數,擴充功能就能從 執行動態伺服器端程式碼 (而非靜態 XML 檔案) 的「同一個網址」。
要求參數的格式如下:
?x=EXTENSION_DATA
其中 EXTENSION_DATA
是採用以下格式的網址編碼字串:
id=EXTENSION_ID&v=EXTENSION_VERSION
例如,兩個副檔名指向同一個更新網址 (https://test.com/extension_updates.php
):
- 擴充功能 1
- ID:「aaaaaaaaaaaaaaaaaaaaaaaaaaaa」
- 版本:「1.1」
- 擴充功能 2
- ID:"bbbbbbbbbbbbbbbbbbbbbbbb 更改</b]
- 版本:「0.4」
更新個別擴充功能的要求如下:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
和
https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
在每個專屬更新網址,單一要求中可以列出多則擴充內容。前一張 舉例來說,如果使用者同時安裝這兩種擴充功能,系統會將這兩個要求合併為 單一要求:
https://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」屬性設為更新回應中的 <app>
元素。
<?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 以上版本。