獨立網頁應用程式 (IWA) 以網頁平台為基礎,提供高信任度、安全且版本獨立的執行階段環境。在生產環境中 (特別是受管理企業內),管理員和開發人員需要精細控管軟體部署作業。
為滿足這些需求,Chrome 為 IWA 提供全面的版本管理功能,包括更新管道、版本固定和版本降級。這些功能可讓您預測部署作業,並在使用者群組中快速恢復控制權。
可用性
版本管理行為取決於 IWA 是由管理員管理,還是由使用者直接安裝:
- 受管理 IWA:管理功能 (包括政策驅動的釘選和降級) 將於 Chrome 133 推出。
- 非受管理 (使用者安裝) IWA:使用者可透過 Chrome 150 使用相關功能 (例如手動選取頻道)。
工作階段類型相容性
所有版本管理功能 (包括更新管道和版本固定) 都與所有 ChromeOS 工作階段類型完全相容。包括:
- 標準受管理使用者工作階段
- 受管理的訪客工作階段 (MGS)
- 專屬 Kiosk 模式環境
更新管道
開發人員可以透過更新管道,為不同的部署和測試目標對象區隔特定應用程式建構版本。如要設定管道,請在應用程式更新資訊清單中,為每個版本項目新增選用的管道陣列欄位。這些管道名稱不限於固定的平台關鍵字 (例如 canary 或 stable),而是任意的開發人員定義 ID,必須格式化為小寫 ASCII 英數字元字串 (可包含連字號或底線,但不得包含空格)。如果版本項目完全省略管道欄位,Chrome 會隱含地將可用性預設為「default」管道。最終,管理政策中指定的頻道名稱必須與資訊清單中定義的字串完全相符;任何錯字或不相符的設定都會導致系統無法識別符合資格的版本,進而停止為這些用戶端更新。
資訊清單設定
如要設定管道,請在網頁應用程式資訊清單中,為每個版本項目新增選用的 channels 陣列。請注意以下事項:
- 管道對應:如果版本項目定義
channels陣列,該版本就只適合在指定管道中安裝。 - 預設備援:如果版本項目完全省略
channels欄位,Chrome 會假設該版本專屬於default管道。 - 完全相符的字串:用戶端政策設定中指定的管道名稱,必須與更新資訊清單中定義的字串完全相符 (區分大小寫)。如果沒有任何版本符合目標頻道名稱,應用程式就無法找到符合資格的更新。
更新資訊清單範例
以下範例顯示支援多個發布管道的更新資訊清單:
{
"versions": [
{
"version": "0.1.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.1.0/iwa-sink.swbn",
"channels": ["delta"]
},
{
"version": "0.2.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.2.0/iwa-sink.swbn",
"channels": ["delta", "default"]
},
{
"version": "0.3.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.3.0/iwa-sink.swbn",
"channels": ["beta", "delta"]
},
{
"version": "0.4.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.4.0/iwa-sink.swbn"
}
]
}
根據這份資訊清單,每個目標管道可用的版本如下:
- default:
0.2.0、0.4.0(缺少明確的管道,且預設為 default) - delta:
0.1.0、0.2.0、0.3.0 - Beta 版:
0.3.0
IWA 更新引擎會尋找應用程式更新資訊清單中的管道欄位,藉此指定發布管道。
固定版本
在高度合規或高度穩定的企業環境中,管理員必須確保裝置執行業務關鍵軟體的確切版本。版本固定功能可讓管理員將 IWA 鎖定在特定版本,停止所有後續的背景更新。企業可藉此高度可靠地維持穩定設定,並遵守嚴格的內部或產業法規。
如要將隔離網頁應用程式 (IWA) 凍結在特定發布版本,企業管理員可以在 IsolatedWebAppInstallForceList 政策中設定 pinned_version 屬性。這項功能主要透過Google 管理控制台的互動式 UI 控制項進行管理,方法是在標準 IWA 安裝工作流程後,前往應用程式的詳細資料面板。不過,管理員也可以直接使用原始 JSON 設定部署這些政策值。管理員成功指定有效版本字串後,Chrome 會提取該明確套件,並封鎖所有後續的自動更新。
特殊行為和限制
- 繼續更新 (取消固定):如要還原自動更新,請移除
pinned_version屬性,或將值變更為較新的目標版本。 - 預設不會降級:如果將
pinned_version設為低於目前安裝的版本,除非明確啟用allow_downgrades,否則不會觸發復原。 - 無法固定的目標:如果設定的
pinned_version在指定更新管道中遺失,或版本舊於已安裝的版本 (降級功能已停用),Chrome 會保留目前安裝的版本,並封鎖任何後續更新。 - 全新部署:如果受管理裝置尚未安裝 IWA,且系統無法擷取指定的 pinned_version,或更新資訊清單中缺少該版本,IWA 就無法安裝。
版本較舊
如果新部署的更新導致重大錯誤或出現安全漏洞,管理員可能需要將裝置復原至先前的穩定狀態。Chrome 支援將已安裝的受管理 IWA 降級至較低版本,這項功能先前在平台上無法使用,因為當時只允許向前更新。
只有在同時符合下列政策條件時,才能降級:
pinned_version設為有效的舊版。allow_downgrades明確設為 true。
降級的運作方式
- 觸發機制:系統會在例行更新檢查週期 (每 4 到 6 小時執行一次) 處理回溯作業。
- 幕後運作方式:Chrome 會使用更新資訊清單中指定的舊版網頁軟體包 (.swbn),完整重新安裝 IWA。
管道轉換邏輯
使用政策切換應用程式的目標管道時,更新引擎會遵循特定行為:
情境 A:切換至有舊版本的頻道
- 如果允許降級:如果 pinned_version 符合目標管道的舊版,且
allow_downgrades為 true,就會發生回溯 (並清除本機使用者資料)。 - 如果系統不允許降級:系統不會降級。裝置會維持目前安裝的較新版本,只有在新選取的管道提供更新版本時才會更新。
情境 B:切換至相同版本的頻道
- 沒有變更:如果新選取的管道指向的版本號碼與目前安裝的版本相同,Chrome 就不會修改已安裝的套件。
- 逐位元組身分原則:開發人員必須確保不同管道中版本號碼相同的應用程式,包含的程式碼簽章也相同,且位元組相符。在不同管道中,以相同版本字串部署不同程式碼集,可能會導致應用程式狀態異常。
管理政策設定
企業版版本控制項會透過集中式 Google 管理控制台平台,使用 IsolatedWebAppInstallForceList 政策架構強制執行。您可以透過管理控制台的 UI 控制項直接管理這些設定,也可以使用原始 JSON 政策設定部署。
以下管理政策設定範例說明如何更新管道、固定版本和降級:
政策值表示法
[
{
"update_manifest_url": "https://awesome-kitchen-sink.glitch.me/update.json",
"web_bundle_id": "aiv4bxauvcu3zvbu6r5yynoh4atkzqqaoeof5mwz54b4zfywcrjuoaacai",
"channel": "beta",
"pinned_version": "0.7.0",
"allow_downgrades": true
}
]
結構定義參數說明
channel(字串,選用):指示 Chrome 只評估更新資訊清單中指派給這個管道的版本。如果省略,Chrome 會評估「default」管道。pinned_version(字串,選用):將裝置明確鎖定為指定版本字串。後續的自動背景更新會遭到封鎖。allow_downgrades(布林值,選用):啟用回溯功能。 如果設為 true,且搭配有效的舊版pinned_version,Chrome 會觸發降級重新安裝作業。警告:如果將這個參數設為 true,即使省略pinned_version欄位,系統也會封鎖所有標準轉送更新。
未受管理 (使用者安裝) 的 IWA (從 150 個起)
如果是使用者自行安裝的未受管理隔離網頁應用程式,版本控管方式如下:
安裝套件 ──► 使用者選取頻道 ──► 自動檢查所選頻道
自動更新的資訊清單必要條件
如要讓使用者安裝的 IWA 在背景檢查及接收自動定期更新,應用程式的本機 Web 應用程式資訊清單 (封裝在 /.well-known/manifest.webmanifest 中套件內的 metadata) 必須包含有效的 update_manifest_url 欄位。
如果應用程式的本機資訊清單檔案中省略這個網址,未受管理的更新引擎就不會執行背景檢查,應用程式也會永久停留在初始安裝版本。
手動選擇管道
首次安裝未受管理的 IWA 時,瀏覽器會檢查更新資訊清單,如果開發人員已設定多個管道,瀏覽器會直接向使用者顯示可用的管道選項 (例如「穩定版」、「Beta 版」)。
重要生命週期規則
- 首次安裝來源:無論使用者在安裝時選取哪個管道,首次安裝一律會部署安裝套件內封裝的檔案。
- 後續更新:安裝完成後,系統只會從所選管道查詢後續更新。只有在目標管道發布較高版本時,應用程式才會更新。
- 切換管道:安裝後如要切換至其他更新管道,使用者必須解除安裝 IWA 並重新安裝,並在安裝流程中選擇所需管道。
如何測試受管理部署作業
如果管理員透過 Chrome Enterprise 管理控制台管理裝置,或直接設定政策,請按照下列步驟操作:
- 前往機構設定下方的「應用程式詳細資料」面板。
- 套用設定屬性,測試釘選和頻道目標。這些控制項與標準使用者工作階段、受管理訪客工作階段 (MGS) 和資訊亭完全相容,因此您可以驗證所有目標部署環境中的行為。
- 如要在本機檢查更新,請前往
chrome://web-app-internals,在測試用戶端手動強制檢查更新,並分析傳入的資訊清單封包。
結論
隔離網頁應用程式的安全架構旨在協助開發人員,同時嚴格預測及控管應用程式生命週期行為。開發人員和 IT 管理員可以善用 Chrome 的版本管理功能,建構符合嚴格法規標準和營運目標的穩健部署管道。
設計及管理應用程式的更新策略時,請牢記下列核心原則:
- 使用漸進式管道:更新管道 (例如
beta、dev或自訂鈴聲) 可讓您逐步收集遙測資料和意見回饋。確保重大更新在預設管道向一般大眾發布前,都經過嚴格驗證。 - 固定版本以確保穩定性:在高度結構化或以法規遵循為導向的企業環境中,將重要端點鎖定為經過驗證的確切 pinned_version,避免作業意外中斷或工作流程中斷。
- 僅在緊急情況下才降級:瞭解降級是強大的修正安全閥,先前不可能做到。不過,由於復原會觸發完整重新安裝作業,並清除所有本機用戶端儲存空間 (IndexedDB、LocalStorage、Cookie),因此應嚴格保留這項功能,用於處理重大安全性問題。對於一般修補程式,部署次要前瞻性更新一律是理想策略。
- 瞭解政策旗標:請注意管理切換鈕;開啟
allow_downgrades會停止所有後續更新,即使未主動定義圖釘也一樣。 - 建立位元組對位元組的完整性:確保部署在不同管道的相同版本號碼,會對應至相同的位元組比對套件,避免用戶端在管道之間轉換時,應用程式狀態不穩定。
直接將這些功能整合到更新資訊清單和企業政策結構定義中,即可確保更新流程可靠、可稽核且安全,同時維持隔離網頁應用程式生態系統的高信任度保證。