study:cs-webbrowser:20250603-002:index
WebView2 缺少 DLL 的錯誤訊息 (2025-06-03)
Local Backup
本測試主要是想利用判斷 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。
2. 只有主程式,沒有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll。
3. 只有主程式,沒有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll 和 runtimes 目錄。
4. 有主程式,有安裝 WebView2 Runtime,沒有任何 dll。
5. 有主程式,有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll。
6. 有主程式,有安裝 WebView2 Runtime,相同目錄下只放 Microsoft.Web.WebView2.Core.dll 和 runtimes 目錄。
初步結論
至少要有 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 的官網了。
-
不過,此時在桌面也會自動産生一個 EdgeView.exe.WebView2 目錄,內容約 10M,似乎不同情況下,檔案大小有所不同,我另一個程式産生的目錄有 20M 左右。
若主程式只有一個 WebView2 元件,並沒有指定網址,則此目錄不會自動出現,只要有指定網址,瀏覽網頁時,此 EdgeView.exe.WebView2 目錄就自動出現了。
-
總結
只有主程式的情況,會有嚴重錯誤,且無法被捕捉處理,至少要有 Microsoft.Web.WebView2.Core.dll。
至少要有 Microsoft.Web.WebView2.Core.dll,或加上 runtimes 目錄和主程式放在一起,才能判斷有沒有安裝 WebView2 Runtime,有 runtimes 或沒有此目錄的錯誤訊息不同。
要有 Microsoft.Web.WebView2.WinForms.dll 才能順利使用 WebView2 元件。
WebView2 元件有指定網址,就會自動産生 10M 或更大的 EdgeView.exe.WebView2 目錄,裡面有不少東西。
study/cs-webbrowser/20250603-002/index.txt · Last modified: 2025/06/03 16:21 by jethro