アプリと WebView2 ランタイムを配布する
Microsoft Edge WebView2 を使用するアプリをリリースする場合は、自動的に更新された エバーグリーン ランタイムを配布するか、 固定バージョン のランタイムを配布することによって、WebView2 ランタイムを配布する必要があります。
WebView2 アプリは、クライアント コンピューター上の WebView2 ランタイムに依存します。 WebView2 アプリを配布する場合は、クライアント コンピューターに WebView2 ランタイムを配布して更新する方法を考慮する必要があります。
WebView2 ランタイム
WebView2 ランタイムは再頒布可能ランタイムであり、WebView2 アプリの基になる (または バッキング) Web プラットフォームとして機能します。 この概念は、Visual C++ または .NET Runtime for C++/.NET アプリに似ています。 WebView2 ランタイムには、WebView2 アプリ用に微調整およびテストされる変更された Microsoft Edge バイナリが含まれています。 WebView2 ランタイムがインストールされると、ユーザーに表示されるブラウザー アプリとして表示されません。 たとえば、ユーザーにブラウザー デスクトップ ショートカットや [ スタート ] メニューのエントリがありません。
WebView2 ランタイムをクライアント マシンに配布および更新する方法には、常緑配布モードと固定バージョン配布モードの 2 つの方法があります。
エバーグリーン ランタイム配布モード
エバーグリーン配布モードでは、WebView2 ランタイムはアプリと共にパッケージ化されませんが、最初はオンライン ブートストラップまたはオフライン インストーラーを使用してクライアントにインストールされます。 その後、クライアント マシンで WebView2 ランタイムが自動的に更新されます。 その後、最新の WebView2 SDK から、最新の WebView2 API を使用する WebView2 アプリの更新プログラムを配布できます。 ほとんどの開発者には、エバーグリーン配布モードをお勧めします。
長所:
基になる Web プラットフォーム (WebView2 ランタイム) は、より多くの労力をかけずに自動的に更新されます。
WebView2 ランタイムは、クライアント上のすべての WebView2 アプリによって共有されるため、クライアント システム上の WebView2 ランタイムには必要なディスク領域が少なくなります。
対象となるシステムでは、Microsoft Edge と Evergreen WebView2 ランタイムのバイナリは、同じバージョンにある場合にハードリンクされます。 このリンクは、ディスク占有領域、メモリ、およびパフォーマンスの利点を提供します。
短所:
- WebView2 アプリでは、特定のバージョンの WebView2 ランタイムが必要であることを指定できません。
Windows 11デバイスとWindows 10 デバイス
エバーグリーン ランタイムは、Windows 11 オペレーティング システムの一部として、すべてのWindows 11 デバイスにプレインストールされます。 Microsoft は、管理対象のWindows 10 デバイスへの Microsoft Edge WebView2 ランタイムの提供に関するページの説明に従って、対象となるすべてのWindows 10 デバイスに WebView2 ランタイムをインストールしました。 アプリでエバーグリーン配布モードを使用している場合でも、ランタイムがまだインストールされていないエッジ ケースをカバーするために、WebView2 ランタイムを配布することをお勧めします。 以下 の「エバーグリーン ランタイム分散モードの詳細」 を参照してください。
固定バージョン ランタイム配布モード
固定バージョン配布モードでは、特定のバージョンの WebView2 ランタイムをダウンロードし、アプリ パッケージ内の WebView2 アプリと共にパッケージ化します。 アプリと共にパッケージ化する WebView2 ランタイムは、クライアントのマシン上の他のアプリではなく、WebView2 アプリでのみ使用されます。
長所:
- WebView2 ランタイムのバージョン管理をより詳細に制御できます。 アプリで使用できる WebView2 ランタイムのバージョンを制御するため、アプリで使用できる WebView2 API がわかります。 アプリは、最新の API が存在するかどうかをテストする必要はありません。
短所:
WebView2 ランタイムは自分で管理する必要があります。 WebView2 ランタイムはクライアントでは自動的に更新されないため、最新の WebView2 API を使用するには、更新された WebView2 ランタイムと共にアプリを定期的に更新する必要があります。
複数の WebView2 アプリがインストールされている場合は、クライアントにさらにディスク領域が必要です。
固定バージョン ランタイムは、インストーラーを使用してインストールできません。
[ランタイムのダウンロード] ページのオプションについて
Microsoft Edge WebView2 ページの [WebView2 ランタイムのダウンロード] セクションには、WebView2 ランタイムをクライアント コンピューターに配布するためのオプションがいくつか用意されています。 このページのオプションを理解すると、使用するアプローチを決定するのに役立つ適切な概要が提供されます。
ほとんどのアプリでは、エバーグリーン配布モードをお勧めします。
ページの [Evergreen Bootstrapper ] セクションには、オンライン ユーザー向けに、クライアント コンピューターで実行される小さなエバーグリーン ランタイム ブートストラップが用意されています。 ブートストラップは、適切なエバーグリーン WebView2 ランタイムをダウンロードしてクライアントにインストールします。 ブートストラップは、いくつかの異なる方法で使用できます。
[リンクの取得] ボタンから取得したリンクを使用して、ブートストラップ にリンク します。 アプリでは、このリンクを使用して、プログラムによってブートストラップをクライアントにダウンロードし、ブートストラップを呼び出します。 この方法では、ブートストラップをアプリにパッケージ化する必要がなくなります。 この方法では、ブートストラップを取得するために、Microsoft の Content Delivery Network (CDN) に依存しています。
ブートストラップをダウンロードし ([ブートストラップ] セクションの [ダウンロード] ボタンを使用して)、ブートストラップをアプリに配布します。 この方法では、ブートストラップをアプリインストーラー/アップデーターまたはアプリ自体にパッケージ化し、アプリに含んだブートストラップを呼び出します。 この方法では、ブートストラップを取得するために、Microsoft の CDN への依存を回避します。
ページの [Evergreen スタンドアロン インストーラー ] セクションには、主にオフライン ユーザー向けの大規模なスタンドアロンの常緑インストーラーが用意されています。 この方法では、スタンドアロン インストーラーをアプリ インストーラー/アップデーターまたはアプリ自体にパッケージ化し、Evergreen スタンドアロン インストーラーを呼び出します。 この方法では、ランタイムを取得するために、Microsoft の CDN への依存を回避します。
ページの [固定バージョン ] セクションには、アプリと共に配布する特定のバージョンの WebView2 ランタイムである固定バージョン ランタイムが用意されています。
WebView2 ランタイムの詳細
WebView2 アプリを配布するときは、クライアント コンピューターに WebView2 ランタイムが存在することを確認します。 この要件は、常緑と固定バージョンの両方の配布モードに適用されます。
固定バージョン配布モードを使用する場合は、次のいくつかのセクションをスキップし、 固定バージョン ランタイム配布モードに関する詳細に進むことができます。
Windows Server Update Services (WSUS) を介した WebView2 ランタイムのサービス
「WebView2 ランタイムのエンタープライズ管理」の「Windows Server Update Services (WSUS)」を参照してください。
開発中または運用環境でのランタイムまたはブラウザーのサポート
開発とテスト中に、WebView2 アプリは、バッキング Web プラットフォームとして次のいずれかのオプションを使用できます。
WebView2 ランタイム。 ランタイムは通常、Microsoft Edge ブラウザーの安定チャネルと同じ Web プラットフォーム機能と更新頻度を提供します。 運用環境で WebView2 ランタイムを使用するか、ユーザーが現在使用している Web プラットフォームに対して開発およびテストします。
プレビュー (Insider) Microsoft Edge ブラウザー チャネル。 これらの Microsoft Edge プレビュー チャネルは、ベータ、開発、カナリアです。 この方法を使用して、アプリの前方互換性をテストして、アプリの更新が必要になる破壊的変更が発生しているかどうかを確認します。 「 今後の API と機能をテストする」を参照してください。
WebView2 アプリの運用リリースでは、Microsoft Edge ではなく、WebView2 ランタイムのみをバッキング Web プラットフォームとして使用できます。
Microsoft Edge Stable チャネルは WebView2 ではサポートされていません
WebView2 アプリでは、バッキング Web プラットフォームとして Microsoft Edge の安定チャネルを使用することはできません。 この制限により、WebView2 アプリの運用環境のリリースがブラウザーに依存できなくなります。 WebView2 アプリは、次の理由により、運用環境でブラウザーへの依存関係を取得できません。
Microsoft Edge はすべてのユーザー デバイスに存在するとは限りません。 企業や教育機関の多くのデバイスは、Windows Updateから切断されているか、Microsoft によって直接管理されていません。 このようなデバイスに Microsoft Edge がインストールされていない可能性があります。 Microsoft Edge ではなく WebView2 ランタイムを使用するように WebView2 アプリの運用バージョンを要求すると、Microsoft Edge が WebView2 アプリを実行するための前提条件になるのを回避できます。
ブラウザーとアプリのユース ケースは異なります。 WebView2 アプリでクライアントに Microsoft Edge が存在する必要がある場合、WebView2 アプリに意図しない副作用が生じる可能性があります。 たとえば、IT 管理者は、ブラウザーが特定のバージョンから更新されないようにして、ブラウザーを内部 Web サイトと互換性を保つことができます。 ブラウザーではなく WebView2 ランタイムを使用するように WebView2 アプリの運用バージョンを要求すると、クライアントの管理者によってブラウザーの更新が禁止されている場合でも、WebView2 アプリは常に使用できます。
ブラウザーとは対照的に、WebView2 ランタイムはアプリのシナリオ用に開発およびテストされており、場合によっては、WebView2 ランタイムに、ブラウザーではまだ使用できないバグ修正が含まれている場合があります。
エバーグリーン WebView2 ランタイムは、Windows 11 オペレーティング システムの一部として含まれます。 さまざまな WebView2 アプリは、Windows 11する前にオペレーティング システムを搭載したデバイスにエバーグリーン ランタイムをインストールしています。 ただし、一部のデバイスではランタイムが事前にインストールされていない可能性があるため、ランタイムがクライアントに存在するかどうかをチェックすることをお勧めします。
アプリが WebView2 を作成する前に、アプリは WebView2 ランタイムが存在するかどうかを (レジストリ キーを確認するか API を呼び出すことによって) チェックし、ランタイムが見つからない場合はインストールする必要があります。 アプリは、アプリのインストールまたは更新 (推奨) 時、またはアプリ実行時に、このチェックを実行できます。 ランタイムが存在するかどうかをチェックするには、以下の「エバーグリーン WebView2 ランタイムのデプロイ」を参照してください。
エバーグリーン ランタイム配布モードの詳細
エバーグリーン配布モードを使用すると、WebView2 アプリが最新の WebView2 機能とセキュリティ更新プログラムを利用できるようになります。 常緑分布モードには、次の特性があります。
WebView2 ランタイムは、ユーザーからの操作を必要とせずに自動的に更新されます。 Microsoft Edge の安定チャネルのリリース ノートと Microsoft Edgeセキュリティ Updatesのリリース ノートに記載されているのと同じ Microsoft Edge 更新プログラムを受け取ります。
エバーグリーン配布モードを使用するすべての WebView2 アプリは、常緑 WebView2 ランタイムの共有コピーを使用します。これにより、ディスク領域が節約されます。
対象となるシステムでは、Microsoft Edge と Evergreen WebView2 ランタイムのバイナリは、同じバージョンにある場合にハードリンクされます。 このリンクは、ディスク占有領域、メモリ、およびパフォーマンスの利点を提供します。
WebView2 ランタイムのエバーグリーン分散モードを使用する場合、WebView2 アプリは、クライアントに最新のランタイムがあることを前提としています。 アプリでは、クライアント上のすべてのアプリに対して特定のバージョンの WebView2 ランタイムを必要とすることはできません。 新しい WebView2 SDK パッケージがリリースされる頃には、互換性のあるバージョンの WebView2 ランタイムが既にクライアントに配布されています。 そのため、WebView2 アプリで WebView2 SDK の最新バージョンの API を使用しても問題ありません。
Windows 11 デバイスとWindows 10 デバイス (詳細)
「Microsoft Edge WebView2 ランタイムをマネージド Windows 10 デバイスに提供する」で説明されているように、Windows 10 デバイスの大部分には WebView2 ランタイムが既にインストールされています。 少数のWindows 10 デバイスに WebView2 ランタイムがインストールされていません。 次のいずれかの方法を使用して、このエッジ ケースを処理することをお勧めします。
アプリを使用して、プログラムによってエバーグリーン ランタイムをデプロイします。 以下 の「エバーグリーン WebView2 ランタイムのデプロイ」 を参照してください。
エンド ユーザーを Microsoft サイトにリダイレクトする: Microsoft Edge WebView2 をダウンロードし、エンド ユーザーにサイトからエバーグリーン WebView2 ランタイム インストーラーをダウンロードし、ランタイム自体をインストールします。
関連項目:
- WebView2 のプレリリースとリリース SDK - Microsoft Edge のプレビュー チャネルと共に、プレリリース バージョンの SDK を使用します。SDK のリリース バージョンとエバーグリーン WebView2 ランタイムを使用します。
- Microsoft Edge WebView2 ランタイムをマネージド Windows 10 デバイスに配信する。
エバーグリーン WebView2 ランタイムのデプロイ
デバイス上のすべてのエバーグリーン アプリに必要なのは、Evergreen WebView2 ランタイムのインストールが 1 つだけです。 エバーグリーン ランタイムのデプロイに役立ついくつかのツール は、WebView2 ランタイムのダウンロード に関するページにあります。
オンライン クライアントの場合: WebView2 ランタイム ブートストラップ は、小さな (約 2 MB) インストーラーです。 WebView2 ランタイム ブートストラップは、ユーザーのデバイス アーキテクチャに一致する Microsoft サーバーからエバーグリーン ランタイムをダウンロードしてインストールします。
WebView2 アプリのセットアップ部分で、ブートストラップにリンクします。 リンクを使用して、プログラムによってブートストラップをダウンロードします。上記のダウンロード ページ で [リンクの取得 ] ボタンを選択します。
または、ブートストラップをダウンロードし、WebView2 アプリでパッケージ化します。
オフライン クライアントの場合: WebView2 ランタイム スタンドアロン インストーラー は、オフライン環境にエバーグリーン WebView2 ランタイムをインストールする完全なインストーラーです。
アプリ インストーラーを使用して MSIX アプリケーションをデプロイする場合は、WebView2 ランタイムを依存関係として指定して、アプリケーションと共にインストールできます。 これを行う方法の詳細については、アプリ パッケージ マニフェスト ドキュメントの「win32dependencies:ExternalDependency (Windows 10、Windows 11)」を参照してください。「App Installer を使用Windows 10アプリをインストールする」も参照してください。
マシンごとまたはユーザーごとのランタイムのインストール
最新のブートストラップインストーラーとスタンドアロン インストーラーでは、WebView2 ランタイムの マシンごとの インストールと ユーザーごとの インストールの両方がサポートされています。
管理者特権のプロセスまたはコマンド プロンプトからインストーラーを実行すると、ランタイムが コンピューターごとにインストールされます。 管理者特権のプロセスまたはコマンド プロンプトからインストーラーを実行しない場合、ランタイムは ユーザーごとにインストールされます。 ただし、 コンピューターごとの Microsoft Edge Updater が配置されている場合、ユーザー ごとの インストールはマシン ごとの インストールに自動的に置き換えられます。 Microsoft Edge の Canary プレビュー チャネルを除き、 コンピューターごとの Microsoft Edge Updater が Microsoft Edge の一部として含まれています。
次のオンラインデプロイワークフローまたはオフラインデプロイワークフローを使用して、アプリが起動する前にランタイムが既にインストールされていることを確認します。 シナリオに応じてワークフローを調整できます。 サンプル コードは、 サンプル リポジトリで入手できます。
WebView2 ランタイムが既にインストールされているかどうかを検出する
WebView2 ランタイムがインストールされていることを確認するには、次のいずれかの方法を使用します。
方法 1: 次の両方のレジストリの場所で、WebView2 ランタイムの
pv (REG_SZ)
レジストリ キーを調べます。 マシンごとのインストールには、HKEY_LOCAL_MACHINE
regkey が使用されます。HKEY_CURRENT_USER
regkey は、ユーザーごとのインストールに使用されます。WebView2 アプリケーションの場合、これらのレジストリ キーの少なくとも 1 つが存在し、0.0.0.0 より大きいバージョンで定義されている必要があります。 どちらの regkey も存在しない場合、またはこれらの regkey の 1 つだけが存在するが、その値が
null
、空の文字列、または 0.0.0.0 である場合は、WebView2 ランタイムがクライアントにインストールされていないことを意味します。 これらのレジストリ キーを調べて、WebView2 ランタイムがインストールされているかどうかを検出し、WebView2 ランタイムのバージョンを取得します。 次の 2 つの場所でpv (REG_SZ)
を見つけます。64 ビット Windows で検査する 2 つのレジストリの場所:
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 で検査する 2 つのレジストリの場所:
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: GetAvailableCoreWebView2BrowserVersionString を実行し、
versionInfo
がnullptr
されているかどうかを評価します。nullptr
は、WebView2 ランタイムがインストールされていないことを示します。 この API は、WebView2 ランタイムまたはインストールされている Microsoft Edge のプレビュー チャネル (ベータ、開発、またはカナリア) のバージョン情報を返します。
オンラインのみのデプロイ
ユーザーがインターネットにアクセスしていると見なされるオンラインのみの展開シナリオがある場合は、次のワークフローを使用します。
アプリのセットアップ中にテストを実行して、WebView2 ランタイムが既にインストールされていることを確認します。 上記の 「WebView2 ランタイムが既にインストールされているかどうかを検出する」を参照してください。
ランタイムがインストールされていない場合は、アプリのセットアップ プロセスで (ダウンロード ページの [ リンクの取得 ] ボタンから) リンクを使用して、プログラムによって WebView2 ランタイム ブートストラップをダウンロードします。
次のコマンドを発行して、WebView2 ランタイム ブートストラップを呼び出します。
管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行すると、 マシンごとの インストールがトリガーされます。 管理者特権のプロセスまたはコマンド プロンプトからコマンドを実行しないと、 ユーザーごとの インストールが行われます。 ただし、 コンピューターごとの Microsoft Edge Updater が配置されている場合、ユーザー ごとの インストールはマシン ごとの インストールに自動的に置き換えられます。 Microsoft Edge の Canary プレビュー チャネルを除き、 コンピューターごとの Microsoft Edge Updater は Microsoft Edge の一部として提供されます。 詳細については、「 マシンごとまたはユーザーごとのランタイムのインストール」を参照してください。
MicrosoftEdgeWebview2Setup.exe /silent /install
上記のワークフローには、いくつかの利点があります。
ランタイムは、必要な場合にのみインストールされます。
ランタイム インストーラーを WebView2 アプリにパッケージ化する必要はありません。
WebView2 ランタイム ブートストラップは、デバイスのアーキテクチャ (プラットフォーム) を自動的に検出し、一致する WebView2 ランタイムをインストールします。
ランタイムはサイレント インストールされます。
または、上に示すように、必要に応じてブートストラップをプログラムでダウンロードする代わりに、WebView2 ランタイムのエバーグリーン ブートストラップをアプリにパッケージ化することもできます。
オフラインデプロイ
アプリのデプロイが完全にオフラインで動作するオフライン展開シナリオがある場合は、次のワークフローを使用します。
[ WebView2 ランタイムのダウンロード] から開発用コンピューターにエバーグリーン スタンドアロン インストーラーをダウンロードします。 Evergreen スタンドアロン インストーラーは、クライアントにエバーグリーン WebView2 ランタイムをインストールします。
アプリ インストーラーまたはアップデーターに、Evergreen スタンドアロン インストーラーを含めます。
アプリのセットアップ中にテストを実行して、WebView2 ランタイムが既にインストールされていることを確認します。 上記の 「WebView2 ランタイムが既にインストールされているかどうかを検出する」を参照してください。
WebView2 ランタイムがインストールされていない場合は、Evergreen スタンドアロン インストーラーを実行します。 サイレント インストールを実行する場合は、次のコマンドを実行できます。
管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行すると、 マシンごとの インストールがトリガーされます。 管理者特権のプロセスまたはコマンド プロンプトからコマンドを実行しないと、 ユーザーごとの インストールが行われます。 ただし、 コンピューターごとの Microsoft Edge Updater が配置されている場合、ユーザー ごとの インストールはマシン ごとの インストールに自動的に置き換えられます。 Microsoft Edge の Canary プレビュー チャネルを除き、 コンピューターごとの Microsoft Edge Updater は Microsoft Edge の一部として提供されます。 詳細については、「 マシンごとまたはユーザーごとのランタイムのインストール」を参照してください。
MicrosoftEdgeWebView2RuntimeInstaller{X64/X86/ARM64}.exe /silent /install
エバーグリーン WebView2 ランタイム更新プログラムを処理する
Evergreen WebView2 ランタイムの新しいバージョンは、クライアントに自動的にダウンロードされます。 クライアントは、WebView2 アプリの再起動時に WebView2 ランタイムの新しいバージョンを使用します。 ただし、アプリが継続的に実行される場合、アプリは引き続き以前のバージョンの WebView2 ランタイムを使用します。 以前のバージョンの WebView2 ランタイムには、新しいバージョンで修正されたセキュリティの脆弱性が存在する可能性があるため、これはセキュリティに影響します。 アプリの脅威モデルに基づいて、アプリが WebView2 ランタイムの最新バージョンをできるだけ早く採用することが重要かどうかを検討する必要があります。 たとえば、WebView2 アプリがサード パーティのコンテンツにアクセスする場合、そのコンテンツは信頼されていないと見なされるため、アプリで WebView2 ランタイムの最新バージョンを使用する必要があります。
WebView2 ランタイムの新しいバージョンを使用するには、以前の WebView2 環境オブジェクトへの参照をすべて解放するか、アプリを再起動する必要があります。 次回アプリが新しい WebView2 環境を作成すると、アプリは新しいバージョンの WebView2 ランタイムを使用します。 これを実現するには、 NewBrowserVersionAvailable
イベントのイベント ハンドラーを使用して、アプリを再起動するようにユーザーに自動的に通知させることができます。 アプリがアプリの再起動を処理する場合は、WebView2 アプリが終了する前にユーザーの状態を保存することを検討してください。
-
CoreWebView2Environment
クラス:
前方互換性のためにアプリをテストする
エバーグリーン配布モードでは、WebView2 ランタイムはクライアントで自動的に最新の状態に保たれ、最新の機能とセキュリティ修正プログラムを提供します。 Evergreen ディストリビューションを使用する場合は、WebView2 アプリと Web との互換性を維持するために、テスト インフラストラクチャを設定する必要があります。
前方互換性のためにアプリをテストする方法のベスト プラクティスについては、「プレビュー チャネルを使用したプレリリース テスト」と「プレビュー チャネルをデプロイしてセルフホストする」を参照してください。
最近の API を使用する場合の機能検出
WebView2 アプリでエバーグリーン モードを使用する場合は、クライアント コンピューターに新しい API を含む最新の WebView2 ランタイムがない可能性があるため、QueryInterface
やtry-catch
などのメソッドを使用して、クライアントのコンピューターに新しい API が存在するようにチェックすることが重要です。 IT 管理が更新を無効にした場合、またはクライアントがオフラインの場合、WebView2 ランタイムへのUpdatesが発生しない可能性があります。
詳細については、「機能検出」を参照して、インストールされたランタイムが WebView2 のプレリリースおよびリリース SDK で最近追加された API をサポートしているかどうかをテストします。
Microsoft Edge と WebView2 ランタイムには、個別の更新ポリシーがあります。 Microsoft Edge の更新プログラムを無効にしても、WebView2 ランタイムは自動的に更新できるため、最新の WebView2 API の可用性には影響しません (WebView2 ランタイムの更新が管理によって無効になっていない限り)。
固定バージョン ランタイム配布モードの詳細
厳密な互換性要件がある制約付き環境の場合は、固定バージョン配布モードの使用を検討してください。 (固定バージョン配布モードは、以前は bring-your-own と呼れていました)。
固定バージョン配布モードでは、アプリの WebView2 ランタイムに対する更新のタイミングを制御します。 特定のバージョンの WebView2 ランタイムをダウンロードし、WebView2 アプリと共にパッケージ化します。 クライアント上の WebView2 ランタイムは自動的には更新されません。 代わりに、更新されたアプリと共にパッケージ化および配布される WebView2 ランタイムを定期的に更新します。 固定バージョンアプローチでは、WebView2 ランタイムのレジストリ キーは使用されません。
固定バージョン バイナリは 250 MB を超え、アプリ パッケージはその量で大きくなります。
固定バージョン配布モードを使用するには:
[WebView2 ランタイムのダウンロード] から、固定バージョン の WebView2 ランタイムをパッケージとしてダウンロードします。
最新および第 2 のメジャー リリースの最もパッチが適用されたバージョンは、このサイトでダウンロードできます。 必要なバージョンのアーカイブされたコピーを保持します。
コマンド ライン コマンド
expand {path to the package} -F:* {path to the destination folder}
を使用するか、WinRAR などの展開ツールを使用して、WebView2 ランタイム パッケージを展開します。 この方法では正しいフォルダー構造が生成されない可能性があるため、エクスプローラーによる展開は避けてください。アプリのインストール中にターゲット コンピューターにデプロイされるように、圧縮解除されたすべての固定バージョン バイナリをアプリ パッケージに含めます。
WebView2 環境を作成するときに、固定バージョン バイナリへのパスを示します。
Win32 C/C++ の場合は、 CreateCoreWebView2EnvironmentWithOptions 関数を使用して環境を作成できます。
msedgewebview2.exe
を含むフォルダーへのパスを示すには、browserExecutableFolder
パラメーターを使用します。.NET の場合は、WebView2
Source
プロパティを有効にする前に環境を指定する必要があります。 .NET の場合は、次のいずれかの方法を使用して環境を指定できます。WebView2
要素のCreationProperties
(WPF/WinForms) プロパティを設定します。CoreWebView2CreationProperties
(WPF/WinForms) クラスのBrowserExecutableFolder
メンバーを使用して、固定バージョン バイナリへのパスを示します。または、
EnsureCoreWebView2Async
(WPF/WinForms) を使用して環境を指定します。 CoreWebView2Environment.CreateAsync のbrowserExecutableFolder
パラメーターを使用して、固定バージョン バイナリへのパスを示します。
WinUI の場合は、インストールされている場所を指定し、ランタイム パスの環境変数を設定することで、アプリがフォルダーにアクセスできることを確認します。 これを行う方法の 1 つは、次の C# コードをアプリに追加することです。
StorageFolder localFolder = Windows.ApplicationModel.Package.Current.InstalledLocation; String fixedPath = Path.Combine(localFolder.Path, "FixedRuntime\\(version number)"); Debug.WriteLine($"Launch path [{localFolder.Path}]"); Debug.WriteLine($"FixedRuntime path [{fixedPath}]"); Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", fixedPath);
固定バージョン バイナリをパッケージ化し、アプリに配布します。 必要に応じてバイナリを更新します。
WinUI の場合、これには、コード エディターでプロジェクト ファイル (
.csproj
) を開き、プロジェクト タグ内に次のコードを追加する場合があります。<ItemGroup> <Content Include="FixedRuntime\(version number)\\**\*.*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>
bin\**designated architecture**\Release
フォルダーに、ランタイム ファイルと一致する FixedRuntime\(バージョン番号) フォルダーがあることを確認します。
固定バージョン 120 以降のWindows 10デバイスでは、固定バージョンを使用するパッケージ化されていない Win32 アプリケーションの開発者は、固定バージョンを引き続き機能させるには、次のコマンドを実行する必要があります。 これは、アプリ コンテナー内でレンダラー プロセスを実行するための v120 のセキュリティの向上によるものです。 この変更は、Windows 11デバイス、古いランタイム、またはパッケージ化されたアプリには影響しません。
次の場所など、ユーザーのデバイスに固定バージョン パッケージを展開するパスを見つけます。
D:\myapp\Microsoft.WebView2.FixedVersionRuntime.87.0.664.8.x64
ユーザーのデバイスで次のコマンドを実行します。
icacls {Fixed Version path} /grant *S-1-15-2-2:(OI)(CI)(RX) icacls {Fixed Version path} /grant *S-1-15-2-1:(OI)(CI)(RX)
次に示すように、[固定バージョン] フォルダーの [セキュリティ] タブで、
ALL APPLICATION PACKAGES
とALL RESTRICTED APPLICATION PACKAGES
に対するアクセス許可が付与されていることを確認します。
固定バージョンの既知の問題
- 現時点では、固定バージョンはネットワークの場所または UNC パスから実行できません。
アプリに付属するファイル
WebView2Loader
コードは、アプリに付属している必要があります。 これを行うには、静的にリンクするかWebView2Loader.lib
アプリ バイナリにリンクするか、アプリのアーキテクチャに一致するWebView2Loader.dll
を含めます。 通常、これは WebView2 SDK で .targets
ファイルを使用するときに Visual Studio によって自動的に処理されますが、アプリで発行するファイルを手動で指定する必要がある場合があります。
WebView2Loader.dll
はネイティブおよびアーキテクチャ固有のバイナリであるため、アプリが実行されると予想されるすべての種類のこのバイナリを含める必要があります。 以下に例を示します。
x86 の場合は、x86 バージョンの
WebView2Loader.dll
を含めます。AnyCPU を使用するマネージド アプリの場合は、x86、x64、arm64 バージョンの
WebView2Loader.dll
を含めます。 適切なバージョンのWebView2Loader.dll
は、適切なアーキテクチャ固有のフォルダーから読み込まれます。
ネイティブ アプリ フォルダー構造の例:
\<myApp>
\WebView2Loader.dll
.NET マネージド アプリの場合は、コア WebView2 機能 (Microsoft.Web.WebView2.Core.dll
) と WPF/WinForms 固有の機能 (Microsoft.Web.WebView2.Winforms.dll
または Microsoft.Web.WebView2.WPF.dll
) 用の WebView2 .NET アセンブリも含める必要があります。
マネージド アプリ フォルダーの構造の例:
\<myApp>
\Microsoft.Web.WebView2.Core.dll
\Microsoft.Web.WebView2.Winforms.dll
\Microsoft.Web.WebView2.WPF.dll
\runtimes
\win-arm64\native\WebView2Loader.dll (arm64)
\win-x64\native\WebView2Loader.dll (x64)
\win-x86\native\WebView2Loader.dll (x86)