User Tools

Site Tools


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。
    • 或只放 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 目錄。
  • 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 的官網了。
    • 不過,此時在桌面也會自動産生一個 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