🙄

WebView2の調べたところまとめ

2022/03/12に公開

Microsoft EdgeのブラウザコントロールWebView2

Microsoft Edgeのブラウザコントロールとして「WebView2」があります。WebView1のほうは、レンダリングエンジンがChroniumになる前の方になります。

導入方法はこちらが詳しいです。

このコントロールを、WindowsForms(.NET Framework)とWPF(.NET Core)で使用するうえで調べた内容を書き留めます。

キャッシュフォルダを設定する

既定の設定だと、プログラムディレクトリにキャッシュフォルダを作ってしまい、権限の問題でフォルダを作れず例外が発生しました。
環境変数として設定が必要なようです。


var environment = await Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync(
    null,
    CACHE_FOLDER
);

Environment.SetEnvironmentVariable("WEBVIEW2_USER_DATA_FOLDER", CACHE_FOLDER);

await webView2Canvas.EnsureCoreWebView2Async(environment);

Sourceプロパティを設定しているとNavigateToStringが効かない

SourceプロパティでURLを指定していると、あとでコンテンツを書き換えるためにNavigateToStringをしても機能しません。
また、一度Sourceプロパティを設定すると、WindowsFormsではプロパティから空欄にすることができず、designer.csを直接編集する必要があったと記憶しています。

NavigateToStringで作ったコンテンツから、ローカルファイルのhtmlのリンクに飛べない

ちょっと記憶が確かではないですが、ローカルファイルへのリンク付きのHTMLコンテンツをNavigateToStringで表示したところ、リンク先に飛べませんでした。
一旦HTMLコンテンツもファイルとして保存して、それを WebView2 のSourceプロパティに設定すれば、リンク先にも飛べました。

インストーラ

アプリの実行時には、ランタイムが必要になります。冒頭の記事にも記載されているURLからダウンロードしてインストールしてもらえばいいのですが、インストーラに組み込む方法もありました。

以下が公式のドキュメントです。

また、以下のリポジトリにインストーラプロジェクトのサンプルもあります。こちらがかなり参考になりました。私はしっかり読まずに適当にやって苦戦したので、しっかり一項目ずつ読んでその通りやっていくことをお勧めします。

おわりに

思ったより短くなってしまいましたが、今後も書き足していきたいと思います。

Discussion