.NET混合開發解決方案6 檢測是否已安裝合適的WebView2執行時

張傳寧發表於2022-05-05

  長青版WebView2執行時將作為Windows 11作業系統的一部分包含在內。但是在Windows 11之前(Win10、Win8.1、Win7等),某些裝置可能未預安裝WebView2執行時。在桌面程式(WinForm、WPF、WinUI、Win32)安裝、更新、啟動後或建立 WebView2物件之前,程式可以自動執行此檢查。通過檢查登錄檔項或呼叫 API 來檢查客戶端電腦中是否已經安裝了 WebView2 執行時,並在缺少時自動安裝它。

檢測方法1 檢查登錄檔

  在以下兩個登錄檔位置檢查 pv (REG_SZ) WebView2 執行時的 regkey。

  • regkey HKEY_LOCAL_MACHINE 用於 每臺計算機 安裝。
  • regkey HKEY_CURRENT_USER 用於 按使用者 安裝。

  對於 WebView2 應用程式,必須至少存在其中一個具有大於 0.0.0.0 的版本並對其進行定義。 如果兩個 regkey 都不存在,或者僅存在其中一個 regkey,但其值為 null空字串或 0.0.0.0,則表示未在客戶端上安裝 WebView2 執行時。 檢查這些 regkey 以檢測是否安裝了 WebView2 執行時,並獲取 WebView2 執行時的版本。 在以下兩個位置找到 pv (REG_SZ) 。

要在 64 位Windows上檢查的兩個登錄檔位置:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}

HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}

要在 32 位Windows上檢查的兩個登錄檔位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}

HKEY_CURRENT_USER\Software\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
檢測方法2 呼叫API
  執行 GetAvailableCoreWebView2BrowserVersionString 並評估 versionInfo 是否為 nullptr。 nullptr 指示未安裝 WebView2 執行時。 此 API 返回 WebView2 執行時或任何已安裝的 Microsoft Edge (Beta、Dev 或 Canary) 預覽頻道的版本資訊。
webView2.CoreWebView2.Environment.BrowserVersionString

獲取到的 BrowserVersionString 值為100.0.1185.50,與控制檯中“Microsoft Edge WebView2 Runtime”的版本號一致。

如果將控制皮膚中將“Microsoft Edge WebView2 Runtime”解除安裝,然後再執行程式,直接報錯

異常資訊:找不到相容的Webview2執行時安裝來承載WebViews”。異常來源:Microsoft.Web.WebView2.Core。

直接將錯誤資訊暴露給終端使用者的做法非常不友好,甚至會洩露一些敏感資訊。

當異常發生時,開發者應適當的加工異常資訊並給出友好提示,然後引導使用者如何操作。

程式碼修改如下:

在具體業務邏輯之前呼叫檢測方法

如果終端使用者的環境隔離了網際網路,上述方式就無法聯網下載“長青版載入程式”。

此時換一種實現方式:應用軟體在製作安裝包的時候應該將“WebView2執行時長青版獨立安裝程式”加入其中。終端使用者安裝應用軟體後,“WebView2執行時長青版獨立安裝程式”也在應用軟體的安裝目錄下

此時根據作業系統的版本進行自動安裝

系統自動啟動安裝程式

點選【執行】按鈕,自動開始安裝。安裝完成後即可使用。

相關文章