.NET混合開發解決方案5 WebView2執行時與分發應用

張傳寧發表於2022-04-29

  釋出使用Microsoft Edge WebView2的應用程式時,客戶端計算機上需要安裝WebView2執行時,可以安裝自動更新的Evergreen執行時,也可以安裝固定版本的。

  WebView2 執行時是可再發行執行時,充當 WebView2 應用的基礎 (或 支援) Web 平臺。 此概念類似於 Visual C++ 或適用於 C++/.NET 應用的 .NET 執行時。 WebView2 執行時包含已修改的Microsoft Edge二進位制檔案,這些二進位制檔案針對 WebView2 應用進行了微調和測試。 安裝 WebView2 執行時後,它不會顯示為使用者可見的瀏覽器應用。 例如,使用者在 “開始” 選單中沒有瀏覽器桌面快捷方式或條目。

可通過兩種不同的方式將 WebView2 執行時分發和更新到客戶端計算機:常青分發模式和固定版本分發模式。

下載地址:https://developer.microsoft.com/zh-CN/microsoft-edge/webview2/#download-section

常青執行時分發模式

  在長青分發模式下,WebView2執行時不隨應用打包,而是最初使用線上載入程式或離線安裝程式安裝到客戶端。之後,WebView2執行時會在客戶端機器上自動更新。然後,開發者可以從最新的 WebView2 SDK 分發使用最新 WebView2 API 的 WebView2 應用的更新。對於大多數開發人員,建議使用長青分發模式。

  • 優點
    • 底層web平臺(WebView2執行時)會自動更新,無需您付出更多努力。
    • 客戶端系統上的WebView2執行時需要更少的磁碟空間,因為客戶端上的所有WebView2應用程式都共享WebView2執行時。
    • 在符合條件的系統上,Microsoft Edge和Evergreen WebView2執行時的二進位制檔案在同一版本上時會硬連結在一起。這種連結為磁碟佔用、記憶體和效能提供了好處。
  • 缺點
    • WebView2應用程式無法指定需要特定版本的WebView2執行時。
固定版本執行時分發模式

在固定版本分發模式下,下載特定版本的 WebView2 執行時,並將其與應用包中的 WebView2 應用一起打包。 隨應用打包的 WebView2 執行時僅由 WebView2 應用使用,而不由客戶端計算機上的任何其他應用使用。

  • 優點
    • 可以更好地控制WebView2執行時的版本控制。清晰地知道應用程式可以使用哪些WebView2 API,因為開發者可以控制應用程式可以使用哪個版本的WebView2執行時。
    • 開發者應用程式不需要測試WebView2是否有最新的API。
  • 缺點
    • 需要自行管理 WebView2 執行時。 WebView2 執行時不會在客戶端上自動更新,因此若要使用最新的 WebView2 API,必須定期將應用與更新的 WebView2 執行時一起更新。
    • 如果安裝了多個 WebView2 應用,則客戶端需要更多磁碟空間。
    • 無法使用安裝程式安裝固定版本執行時。
下載選項

上圖中提供的三種下載方式,全部下載到本地,如下圖

①是在客戶端計算機上執行的小型常青執行時載入程式,體積僅有1.7M,安裝過程中需要聯網下載WebView2 真正的執行時程式,下載完成後才執行安裝。採用這種模式安裝的執行時始終與微軟官方的最新版本保持一致。

.NET混合開發解決方案5 WebView2執行時與分發應用

.NET混合開發解決方案5 WebView2執行時與分發應用

.NET混合開發解決方案5 WebView2執行時與分發應用

.NET混合開發解決方案5 WebView2執行時與分發應用

.NET混合開發解決方案5 WebView2執行時與分發應用

②是32位的WebView2 Runtime長青版獨立安裝程式。

③是64位的WebView2 Runtime長青版獨立安裝程式。

④是固定版本執行時。截止我下載時最新版本為100.0.1185.50。開發者可以選擇其他版本使用。下載後解壓,將其打包到應用程式中即可使用。

對於大多數應用,建議使用常青分發模式。安裝完成後,控制皮膚檢視,版本號與Edge瀏覽器版本保持一致。但是WebView2執行時是獨立的執行環境,不依賴於Edge。

長青版更新策略

WebView2 的正式釋出版 (GA) 或預覽版適用於以下程式設計環境:

  • 採用長青版安裝程式安裝WebView2執行時程式,之後通過通過 Windows Server Update Services (WSUS) 為 WebView2 執行時提供更新服務。建議使用預設更新程式接收 WebView2 Microsoft Edge更新。 應謹慎修改更新和服務路徑。

在開發和測試期間,WebView2應用程式可以使用以下任一選項作為支援web平臺:

  • WebView2執行時通常提供與Microsoft Edge瀏覽器穩定通道相同的web平臺功能和更新節奏。在生產環境中使用WebView2執行時,或者根據使用者現在擁有的web平臺進行開發和測試。
  • 預覽 (預覽體驗成員) Microsoft Edge瀏覽器頻道。 這些Microsoft Edge預覽頻道是 Beta、Dev 和 Canary。 使用此方法測試應用是否具有前向相容性,以便知道是否即將發生需要更新應用的重大更改。 請參閱 測試即將推出的 API 和功能

WebView2應用程式的生產版本只能使用WebView2執行時作為支援web平臺,而不能使用Microsoft Edge

常青分發模式可確保 WebView2 應用正在利用最新的 WebView2 功能和安全更新。 常青分佈模式具有以下特徵:

  • WebView2 執行時會自動更新,而無需執行任何操作。 它接收Microsoft Edge穩定頻道和Microsoft Edge安全更新發行說明中所述的相同Microsoft Edge更新。

  • 所有使用常青分發模式的 WebView2 應用都使用常青 WebView2 執行時的共享副本,從而節省磁碟空間。

  • 在符合條件的系統上,Microsoft Edge和 Evergreen WebView2 執行時的二進位制檔案在同一版本中硬連結在一起。 此連結為磁碟佔用量、記憶體和效能提供了好處。

  使用 WebView2 執行時的長青分發模式時,WebView2 應用假定客戶端具有最新的執行時。 對於客戶端上的所有應用,應用不能要求特定版本的 WebView2 執行時。 釋出新的 WebView2 SDK 包時,WebView2 執行時的相容版本已分發給客戶端。 因此,WebView2 應用可以使用最新版本的 WebView2 SDK 中的 API。請參閱 瞭解瀏覽器版本和 WebView2

固定版本更新策略

  對於具有嚴格相容性要求的受約束環境,請考慮使用固定版本分發模式。 固定版本分發模式以前稱為自帶版本分發模式。

  在固定版本分發模式下,開發者可以控制應用程式WebView2執行時的更新時間。下載特定版本的WebView2執行時,然後將其與WebView2應用程式打包。客戶端上的WebView2執行時不會自動更新。相反,開發者可以定期更新WebView2執行時,該執行時與更新的應用程式一起打包和分發。固定版本方法不使用WebView2執行時的登錄檔項

若要使用固定版本分發模式,請執行以下操作:

1、下載 WebView2 執行時的固定版本作為包。

可在此站點下載最新版本和第二大版本的最修補版本。 保留所需任何版本的存檔副本。

2、將下載的檔案進行解壓縮

3、在應用包中包括所有解壓縮的固定版本二進位制檔案,約368M,這些二進位制檔案將在應用安裝期間部署在目標計算機上。

4、在建立WebView2環境時指示固定版本二進位制檔案的路徑。

  • 對於 Win32 C/C++,可以使用 CreateCoreWebView2EnvironmentWithOptions 函式建立環境。 browserExecutableFolder使用該引數指示包含msedgewebview2.exe的資料夾的路徑。

  • 對於 .NET,必須在 WebView2 Source 屬性生效之前指定環境。

    對於 WinUI,請通過指定已安裝的位置併為執行時路徑設定環境變數來確保應用有權訪問該資料夾。 執行此操作的一種方法是將以下 C# 程式碼新增到應用
    •  對於 .NET,可以使用以下任一方法來指定環境:在CreationProperties元素上WebView2設定 (WPFWinForms/) 屬性。 BrowserExecutableFolder使用 (WPFWinForms /) 類中CoreWebView2CreationProperties的成員來指示固定版本二進位制檔案的路徑。

    • 或者使用EnsureCoreWebView2Async (WPFWinForms /) 來指定環境。 browserExecutableFolder使用 CoreWebView2Environment.CreateAsync 中的引數來指示固定版本二進位制檔案的路徑。

StorageFolder localFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
String fixedPath = Path.Combine(localFolder.Path, "FixedRuntime\\(version number)");
Debug.WriteLine($"Launch path [{localFolder.Path}]");
Debug.WriteLine($"FixedRuntime path [{fixedPath}]");
Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", fixedPath);

5、使用應用打包並寄送固定版本二進位制檔案。 根據需要更新二進位制檔案。

  • 對於 WinUI,這可能包括在程式碼編輯器中開啟專案檔案 (.csproj) ,然後在專案標記中新增以下程式碼
<ItemGroup>
   <Content Include="FixedRuntime\(version number)\\**\*.*">
   <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
   </Content>
</ItemGroup>

bin\**designated architecture**\Release驗證資料夾是否具有匹配的 FixedRuntime\ (版本號) 資料夾,其中包含執行時檔案。

WebView2 不支援 Microsoft Edge 穩定通道

WebView2應用程式不允許使用Microsoft Edge的穩定頻道作為支援web平臺。此限制可防止WebView2應用程式的生產版本依賴於瀏覽器。WebView2應用程式在生產過程中不能依賴瀏覽器,原因如下:

  • Microsoft Edge不能保證存在於所有使用者裝置上。 企業和教育部門的許多裝置都與Windows Update斷開連線,或者不受 Microsoft 直接管理。 此類裝置可能未安裝Microsoft Edge。 要求 WebView2 應用的生產版本使用 WebView2 執行時而不是Microsoft Edge避免使Microsoft Edge成為執行 WebView2 應用的先決條件。

  • 瀏覽器和應用有不同的用例。 如果 WebView2 應用需要客戶端上存在Microsoft Edge,則可能會對 WebView2 應用產生意外的副作用。 例如,IT 管理員可以阻止從特定版本更新瀏覽器,以使瀏覽器與內部網站相容。 要求 WebView2 應用的生產版本使用 WebView2 執行時而不是瀏覽器,即使客戶端管理員阻止了瀏覽器更新,WebView2 應用也可保持常青。

  • 與瀏覽器不同,WebView2 執行時是針對應用方案開發和測試的,在某些情況下,WebView2 執行時可能包含瀏覽器中尚不可用的 bug 修復。

  長青版 WebView2 執行時將作為Windows 11作業系統的一部分包含在內。

  在Windows 11之前,各種 WebView2 應用已在具有作業系統的裝置上安裝了長青版執行時。 但是,某些裝置可能未預安裝執行時,因此最好檢查客戶端上是否存在執行時。   

  在應用建立 WebView2 之前,應用應通過檢查登錄檔項或呼叫 API 來檢查 WebView2 執行時是否存在,並在缺少執行時時安裝它。 在安裝或更新應用 (建議的) 或應用執行時,應用可以執行此檢查。

相關文章