本測試主要是想利用判斷 WebView2 的版本,來檢視在缺少部份 DLL 的情況下,會有什麼錯誤訊息,以判斷至少要提供哪些 DLL 給使用者。
主程式只有一個按鈕,會利用檢查 WebView2 版本來判斷使用者是否有安裝 WebView2 Runtime。
底下提到的 dll 檔案和 runtimes 目錄是指在 Visual Studio 産生主程式 exe 的目錄中看到的這三個檔案:
Microsoft.Web.WebView2.Core.dll
Microsoft.Web.WebView2.WinForms.dll
Microsoft.Web.WebView2.Wpf.dll
及 runtimes 目錄。
測試時,主程式是放在桌面。
主要程式如下,按下按鈕後會檢查版本,若失敗則印出錯誤訊息。
using Microsoft.Web.WebView2.Core;
private void button1_Click(object sender, EventArgs e)
{
try {
string version = CoreWebView2Environment.GetAvailableBrowserVersionString();
MessageBox.Show(version);
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
1. 只有主程式,沒有安裝 WebView2 Runtime,沒有任何 dll。
或只放 Microsoft.Web.WebView2.WinForms.dll。
會出現嚴重的錯誤訊息,且無法被程式捕捉。
ps. 有安裝 Runtime 也是如此,同情況 4.
2. 只有主程式,沒有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll。
無法偵測版本,程式可以捕捉到錯誤訊息。
ps. 有安裝 Runtime 也是如此,同情況 4.
3. 只有主程式,沒有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll 和 runtimes 目錄。
無法偵測版本,程式可以捕捉到不同的錯誤訊息。
此時安裝 WebView2 Runtime,下載處為:
https://developer.microsoft.com/zh-tw/microsoft-edge/webview2/#download-section
選擇下載永久啟動載入器,由它來安裝 WebView2 Runtime
下載後,執行程式即會開始安裝。
4. 有主程式,有安裝 WebView2 Runtime,沒有任何 dll。
或只放 Microsoft.Web.WebView2.WinForms.dll。
情況同 1. 會出現嚴重錯誤。
5. 有主程式,有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll。
情況同 2. 無法偵測版本,程式可以捕捉到錯誤訊息。
6. 有主程式,有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll 和 runtimes 目錄。
順利偵測到 WebView2 版本號碼了。
初步結論,至少要有 Microsoft.Web.WebView2.Core.dll 和 runtimes 目錄和主程式放在一起,才能判斷有沒有安裝 WebView2 Runtime。
程式此時再加碼,改成若檢測到有 WebView2 之後,載入含有 WebView2 元件的 Form。
try {
string version = CoreWebView2Environment.GetAvailableBrowserVersionString();
MessageBox.Show(version);
// 開啟含有 WebView2 元件的 Form2
Form2 fm2 = new Form2();
fm2.ShowDialog();
} catch (Exception ex) {
MessageBox.Show(ex.Message);
}
在情況 6 下,無法開啟含有 WebView2 元件的 Form2,會有錯誤訊息。
7. 有主程式,有安裝 WebView2 Runtime,相同目錄下有
Microsoft.Web.WebView2.Core.dll 和
Microsoft.Web.WebView2.WinForms.dll 和
runtimes 目錄。
此時在呈現版本之後,就能順利開啟 Form2,並且能由 WebView2 元件看到 Microsoft 的官網了。