アプリと WebView2 ランタイムを配布する

Microsoft Edge WebView2 を使用するアプリをリリースする場合は、自動的に更新される Evergreen ランタイムを配布するか、ランタイムの 修正済みバージョン を配布することにより、WebView2 ランタイムを配布する必要があります。

WebView2 アプリは、クライアント コンピューター上の WebView2 ランタイムに依存します。 WebView2 アプリを配布する場合は、WebView2 ランタイムがクライアント コンピューターに配布および更新される方法を考慮する必要があります。

WebView2 ランタイム

WebView2 ランタイムは再頒布可能なランタイムであり、WebView2 アプリの基 (または_バッキング_) になる Web プラットフォームとして機能します。 概念は、Visual C++ または C++/.NET アプリ用の .NET ランタイムに似ています。 WebView2 ランタイムには、WebView2 アプリ用に微調整およびテストされた変更済みの Microsoft Edge バイナリが含まれています。 WebView2 ランタイムをインストールすると、ユーザーに表示されるブラウザー アプリとして表示されなくなります。 たとえば、ユーザーにはブラウザのデスクトップ ショートカットや [スタート] メニューのエントリがありません。

WebView2 ランタイムをクライアント コンピューターに配布および更新するには、Evergreen 配布モードと修正済みバージョン配布モードの 2 つの異なる方法があります。

Evergreen ランタイム配布モード

Evergreen 配布モードでは、WebView2 ランタイムはアプリにパッケージ化されていませんが、最初はオンライン ブートストラップまたはオフライン インストーラーを使用してクライアントにインストールされます。 その後、WebView2 ランタイムはクライアント コンピューターで自動的に更新されます。 その後、最新の WebView2 API を使用する WebView2 アプリの更新プログラムを、最新の WebView2 SDK から配布できます。 ほとんどの開発者には、エバーグリーンの配布モードをお勧めします。

利点:

  • 基盤となる Web プラットフォーム (WebView2 ランタイム) は、ユーザーの努力なしに自動的に更新されます。

  • WebView2 ランタイムは、クライアント上にあるすべての WebView2 アプリによって共有されるため、クライアント システム上の WebView2 ランタイムに必要なディスク容量は少なくなります。

  • 適格なシステムでは、Microsoft Edge と Evergreen WebView2 ランタイムのバイナリは、同じバージョン上にある場合、互いにハードリンクされます。 このリンクは、ディスクフットプリント、メモリ、およびパフォーマンスの利点を提供します。

欠点:

  • WebView2 アプリは、特定のバージョンの WebView2 ランタイムが必要であることを指定できません。

修正済みバージョンのランタイム配布モード

_修正済みバージョン_配布モードでは、特定のバージョンの WebView2 ランタイムをダウンロードし、WebView2 アプリと一緒にアプリ パッケージにパッケージ化します。 アプリと一緒にパッケージ化する WebView2 ランタイムは、WebView2 アプリによってのみ使用され、クライアントのマシン上の他のアプリによっては使用されません。

利点:

  • WebView2 ランタイムのバージョン管理を詳細に制御できます。 アプリで使用できる WebView2 ランタイムのバージョンを制御するため、アプリで使用できる WebView2 API がわかります。 アプリは、最新の API が存在するかどうかをテストする必要はありません。

欠点:

  • WebView2 ランタイムを自分で管理する必要があります。 WebView2 ランタイムはクライアントで自動的に更新されないため、最新の WebView2 API を使用するには、更新された WebView2 ランタイムと一緒にアプリを定期的に更新する必要があります。

  • 複数の WebView2 アプリがインストールされている場合は、クライアントにより多くのディスク容量が必要です。

  • インストーラーを使用して修正済みバージョン ランタイムをインストールすることはできません。

[ランタイムのダウンロード] ページのオプションについて

Microsoft Edge WebView2 ページの [WebView2 ランタイムのダウンロード] セクションには、WebView2 ランタイムをクライアント マシンに配布するためのいくつかのオプションがあります。 このページのオプションを理解すると、使用するアプローチを決定するのに役立つ優れた紹介が提供されます。

WebView2 ランタイムを配布および更新するためのオプション

ほとんどのアプリでは、Evergreen 配布モードをお勧めします。

  • このページの Evergreen Bootstrapper セクションは、オンラインユーザー向けにクライアントマシンで実行される小さな Evergreen Runtime ブートストラップを提供します。 ブートストラップは、適切な WebView2 Evergreen ランタイムをダウンロードしてクライアントにインストールします。 ブートストラップは、次に示すいくつかの方法で使用できます。

    • [リンクの取得] ボタンから取得したリンクを使用して、ブートストラップにリンクします。 アプリはこのリンクを使用して、プログラムでブートストラップをクライアントにダウンロードし、ブートストラップを呼び出します。 このアプローチにより、ブートストラップをアプリにパッケージ化する必要がなくなります。 このアプローチは、ブートストラップを取得するために、Microsoft のコンテンツ配信ネットワーク (CDN) に依存しています。

    • ブートストラップをダウンロードし ([ブートストラップ] セクションの [ダウンロード] ボタンを使用)、アプリと一緒にブートストラップを配布します。 このアプローチでは、ブートストラップをアプリ インストーラー / アップデーターまたはアプリ自体と一緒にパッケージ化し、アプリに含まれているブートストラップを呼び出します。 この方法では、ブートストラップを取得するために、Microsoft のCDNの依存関係を回避します。

  • このページの [Evergreen スタンドアロン インストーラー] セクションは、主にオフライン ユーザー向けに、大規模なスタンドアロン Evergreen インストーラーを提供します。 このアプローチでは、スタンドアロン インストーラーをアプリ インストーラー /ア ップデーターまたはアプリ自体と一緒にパッケージ化し、Evergreen スタンドアロン インストーラーを呼び出します。 このアプローチは、ランタイムを取得するために、Microsoft の CDN への依存を回避します。

  • ページの [修正済みバージョン] セクションには、アプリと一緒に配布する WebView2 ランタイムの特定のバージョンである修正済みバージョン ランタイムがあります。

WebView2 ランタイムの詳細

WebView2 アプリを配布する場合は、WebView2 ランタイムがクライアント コンピューター上に存在する必要があります。 この要件は、Evergreen と修正済みバージョンの両方の配布モードに適用されます。

修正済みバージョン配布モードを使用する場合は、次の 2 つのセクションをスキップして、「修正済みバージョンのランタイム配布モードの詳細」に 進んでください

Windows Server Update Services (WSUS) を介した WebView2 ランタイムのサービス

[WebView2 ランタイムのエンタープライズ管理]Windows Server Update Services (WSUS) を参照してください。

開発中または実稼働中のランタイムまたはブラウザーのサポート

開発およびテスト中に、WebView2 アプリは、バッキング Web プラットフォームとしていずれかのオプションを使用できます。

  • WebView2 ランタイム。 ランタイムは通常、Microsoft Edge ブラウザーの Stable チャネルと同じ Web プラットフォーム機能と更新ケイデンスを提供します。 実稼働環境で WebView2 ランタイムを使用するか、ユーザーが現在使用している Web プラットフォームに対して開発およびテストを行います。

  • プレビュー (Insider) Microsoft Edge ブラウザー チャネル。 これらの Microsoft Edge プレビュー チャネルは、Beta、Dev、および Canary です。 このアプローチを使用して、上位互換性についてアプリをテストします。これにより、アプリの更新が必要になる重大な変更が発生するかどうかを確認できます。 「今後の API と機能をテストする」を参照してください。

WebView2 アプリの製品版リリースでは、WebView2 ランタイムのみをバッキング Webプ ラットフォームとして使用でき、Microsoft Edge は使用できません。

Microsoft Edge Stable チャネルは WebView2 ではサポートされていません

WebView2 アプリは、Microsoft Edge の Stable チャネルをバッキング Web プラットフォームとして使用することは許可されていません。 この制限により、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 アプリは Evergreen のままになります。

  • ブラウザとは対照的に、WebView2 ランタイムはアプリのシナリオ用に開発およびテストされており、場合によっては、WebView2 ランタイムにブラウザでまだ利用できないバグ修正が含まれている可能性があります。

Evergreen WebView2 ランタイムは、Windows 11 オペレーティング システムの一部として含まれます。 さまざまな WebView2 アプリが、Windows 11 より前のオペレーティングシ ステムを搭載したデバイスに Evergreen ランタイムをインストールしています。 ただし、一部のデバイスにはランタイムがプリインストールされていない可能性があるため、ランタイムがクライアントに存在するかどうかを確認することをお勧めします。

アプリが WebView2 を作成する前に、アプリは (レジストリキーを確認するか、API を呼び出すことにより) WebView2 ランタイムが存在するかどうかを確認し、ランタイムが存在しない場合はインストールする必要があります。 アプリは、アプリのインストールまたは更新時 (推奨)、またはアプリの実行時にこのチェックを実行できます。 ランタイムが存在するかどうかを確認するには、以下の「Evergreen WebView2 ランタイムの展開」を参照してください。

Evergreen ランタイム配布モードの詳細

Evergreen 配布モードでは、WebView2 アプリが最新の WebView2 機能とセキュリティ更新プログラムを利用できます。 Evergreen 配布モードには、次の特性があります。

WebView2 ランタイムの Evergreen 配布モードを使用すると、WebView2 アプリはクライアントが最新のランタイムを持つと見なします。 クライアント上のすべてのアプリに対して、アプリで WebView2 ランタイムの特定のバージョンを要求することはできません。 新しい WebView2 SDK パッケージがリリースされる前に、互換性のあるバージョンの WebView2 ランタイムが既にクライアントに配布されています。 したがって、WebView2 アプリが最新バージョンの WebView2 SDK にある API を使用しても問題ありません。

ブラウザーのバージョンと WebView2 について」を参照してください。

エバーグリーン WebView2 ランタイムの展開

デバイス上のすべてのエバーグリーン アプリに必要なエバーグリーン WebView2 ランタイムのインストールは 1 つだけです。 Download the WebView2 Runtime で Evergreen Runtime の展開に役立ついくつかのツールを利用できます。

  • オンライン クライアントの場合: _WebView2 ランタイム ブートストラップ_は、小さな (約 2 MB) インストーラーです。 WebView2 ランタイム ブートストラップは、ユーザーのデバイス アーキテクチャに一致する Microsoft サーバーから Evergreen ランタイムをダウンロードしてインストールします。

    • WebView2 アプリのセットアップ部分で、ブートストラップにリンクします。 リンクを使用して、プログラムでブートストラップをダウンロードします。 上記のダウンロード ページで [リンクを取得] ボタンを選択します。

    • または、ブートストラップをダウンロードして、WebView2 アプリと一緒にパッケージ化します。

  • オフライン クライアントの場合: _WebView2 ランタイム スタンドアロン インストーラー_は、オフライン環境に Evergreen WebView2 ランタイムをインストールする完全なインストーラーです。

ランタイムをコンピューター単位またはユーザー単位でインストールする

最新のブートストラップとスタンドアロン インストーラーは、WebView2 ランタイムの_コンピューターごと_のインストールと_ユーザーごと_のインストールの両方をサポートします。

管理者特権のプロセスまたはコマンドプロンプトからインストーラーを実行する場合、ランタイムは_コンピューターごと_にインストールされます。 管理者特権のプロセスまたはコマンドプロンプトからインストーラーを実行しない場合、ランタイムは_ユーザーごと_にインストールされます。 ただし、_コンピューターごと_の Microsoft Edge Updater がインストールされている場合、_ユーザーごと_のインストールは_コンピューターごと_のインストールに自動的に置き換えられます。 _コンピューターごと_の Microsoft Edge Updater は、Microsoft Edge の Canary プレビューチ ャネルを除いて、Microsoft Edge の一部として含まれています。

次のオンライン展開ワークフローまたはオフライン展開ワークフローを使用して、アプリが起動する前にランタイムが既にインストールされていることを確認します。 シナリオに応じてワークフローを調整できます。 サンプル コードは、サンプルのリポジトリで利用可能です。

適切な WebView2 ランタイムが既にインストールされているかどうかを検出する

ランタイムがインストールされていることを確認するには、次のいずれかの方法を使用します。

  • 方法 1: WebView2 ランタイムの pv (REG_SZ) レジストリキーを、次のレジストリの両方の場所で検査します。 HKEY_LOCAL_MACHINE regkey は、コンピューターごと のインストールに使用されます。 HKEY_CURRENT_USER regkey は、ユーザーごと のインストールに使用されます。

    WebView2 アプリケーションの場合、少なくとも 1 つの (バージョン 0.0.0.0 より大きい) regkey が存在し、定義済みである必要があります。 どちらの regkey も存在しない場合、またはこれらの regkey の 1 つだけが存在するが、その値が null 、空の文字列、または 0.0.0.0 である場合、これは WebView2 ランタイムがクライアントにインストールされていないことを意味します。 これらの regkey を調べて、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 を実行し、versionInfonullptr かどうかを評価します。 nullptr WebView2 ランタイムがインストールされていないかどうかを示します。 この API は、WebView2 ランタイムまたは WebView2 ランタイムのインストール済みプレビュー チャネル (Beta、Dev、または Canary) Microsoft Edgeバージョン情報を返します。

オンラインのみの展開

ユーザーがインターネットにアクセスできると想定されるオンライン専用の展開シナリオがある場合は、次のワークフローを使用します。

  1. アプリのセットアップ中にテストを実行して、WebView2 ランタイムが既にインストールされていることを確認します。 「適切な WebView2 ランタイムが既にインストールされているかどうかを検出する」を参照してください。

  2. ランタイムがインストールされていない場合は、アプリのセットアップ プロセスで、リンク (ダウンロードページの [リンクの取得] ボタンから取得します) を使用して、WebView2 ランタイム ブートストラップをプログラムでダウンロードします。

  3. 次のコマンドを発行して、WebView2 ランタイム ブートストラップを起動します。

    管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行すると、_コンピューターごと_のインストールがトリガーされます。 管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行しない場合、_ユーザーごと_のインストールがトリガーされます。 ただし、_コンピューターごと_の Microsoft Edge Updater がインストールされている場合、_ユーザーごと_のインストールは_コンピューターごと_のインストールに自動的に置き換えられます。 _コンピューターごと_の Microsoft Edge Updater は、Microsoft Edge の Canary プレビューチ ャネルを除いて、Microsoft Edge の一部として提供されています。 詳細については、「ランタイムをコンピューター単位またはユーザー単位でインストールする」を参照してください。

    MicrosoftEdgeWebview2Setup.exe /silent /install
    

上記のワークフローには、いくつかの利点があります。

  • ランタイムは、必要な場合にのみインストールされます。

  • ランタイム インストーラーを WebView2 アプリでパッケージ化する必要はありません。

  • WebView2 ランタイム ブートストラップは、デバイスのアーキテクチャ (プラットフォーム) を自動的に検出し、一致する WebView2 ランタイムをインストールします。

  • ランタイムはサイレント インストールされます。

または、上記のようにリンクを取得してブートストラップ をオンデマンドでプログラムでダウンロードする代わりに、アプリで WebView2 ランタイム用の Evergreen ブートストラップをパッケージ化することもできます。

オフラインの展開

アプリの展開が完全にオフラインで動作する必要があるオフライン展開シナリオがある場合は、次のワークフローを使用します。

  1. 開発マシンへの WebView2 ランタイムのダウンロードからEvergreen スタンドアロン インストーラーをダウンロードします。 Evergreen スタンドアロン インストーラーは、WebView2 Evergreen ランタイムをクライアントにインストールします。

  2. アプリ インストーラーまたはアップデータに Evergreen スタンドアロン インストーラーを含めます。

  3. アプリのセットアップ中にテストを実行して、WebView2 ランタイムが既にインストールされていることを確認します。 「適切な WebView2 ランタイムが既にインストールされているかどうかを検出する」を参照してください。

  4. WebView2 ランタイムがインストールされていない場合は、Evergreen スタンドアロン インストーラーを実行します。 サイレント インストールを実行する場合は、次のコマンドを実行できます。

    管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行すると、_コンピューターごと_のインストールがトリガーされます。 管理者特権のプロセスまたはコマンド プロンプトから次のコマンドを実行しない場合、_ユーザーごと_のインストールがトリガーされます。 ただし、_コンピューターごと_の Microsoft Edge Updater がインストールされている場合、_ユーザーごと_のインストールは_コンピューターごと_のインストールに自動的に置き換えられます。 _コンピューターごと_の Microsoft Edge Updater は、Microsoft Edge の Canary プレビューチ ャネルを除いて、Microsoft Edge の一部として提供されています。 詳細については、「ランタイムをコンピューター単位またはユーザー単位でインストールする」を参照してください。

    MicrosoftEdgeWebView2RuntimeInstaller{X64/X86/ARM64}.exe /silent /install
    

アプリの上位互換性をテストする

Web は常に進化しています。 Evergreen 配布モードでは、WebView2 ランタイムはクライアント上で自動的に最新の状態に保たれ、最新の機能とセキュリティ修正を提供します。 Evergreen 配布を使用する場合は、WebView2 アプリが Web との互換性を確保するために、テスト インフラストラクチャをセットアップする必要があります。

Microsoft Edgeプレビュー チャネル (Beta、Dev、Canary) を使用すると、WebView2 ランタイムで次に表示されるコンテンツを詳細に確認できます。 WebView2 アプリを Microsoft Edge プレビュー チャネルに対して定期的にテストし、アプリを更新するか、問題が発生した場合は問題を報告します。 Canary は、最速のケイデンスで出荷され、最新のAPIを備えているため、推奨されるプレビュー チャネルです。

適切なチャネルを決定するのに役立つように、「Microsoft Edge チャネルの概要」を参照してください。 テスト環境に Microsoft Edge Insider Channels をダウンロードし、regkeyまたは環境変数を使用してテストアプリのチャネル設定を示すことができます。

CreateCoreWebView2EnvironmentWithOptions を参照してください。 「Microsoft Edge WebDriver を使用した WebView2 の自動化とテスト」で説明されているように、WebDriver を使用して WebView2 のテストを自動化することもできます。

最近の API を使用する場合の機能検出

Evergreen モードを使用する場合、WebView2 アプリが最近の SDK からの新しい WebView2 API を使用するときは、QueryInterfacetry-catch などのアプローチを使用して、新しい API がクライアントのマシンに存在することを確認する必要があります。 WebView2 ランタイムが更新されない場合もありますので、この機能検出はベスト プラクティスです。

Evergreen 配布モードを使用している場合でも、次の理由により WebView2 ランタイムが更新されない可能性があります:

  • 管理者はデバイスの更新を制御できるため、IT 管理者は WebView2 ランタイムの更新をオフにすることができます。

  • オフラインのクライアントは、更新された WebView2 ランタイムを受け取りません。

Microsoft Edge と WebView2 ランタイムの更新ポリシーは別々です。 IT 管理者が Microsoft Edge の自動更新を無効にした場合でも、管理者がランタイム更新をオフにしない限り、WebView2 ランタイム は自動的に更新されます。 管理者が Microsoft Edge の更新を無効にした場合 (これはやや一般的です)、クライアント コンピューターで使用できる WebView2 API には影響しません。

インストール済みのランタイムが最近追加された API をサポートしているかどうかをテストするための機能検出」を参照してください。

修正済みバージョンランタイム配布モードの詳細

厳密な互換性要件がある制約のある環境では、固定バージョンの配布モードの使用を検討してください。 修正済みバージョン配布モードは、以前は bring-your-own と呼ばれていました

修正済みバージョン配布モードでは、アプリの WebView2 ランタイムに対する更新のタイミングを制御します。 WebView2 ランタイムの特定のバージョンをダウンロードし、WebView2 アプリでパッケージ化します。 クライアント上の WebView2 ランタイムは自動的には更新されません。 代わりに、パッケージ化され、更新されたアプリと共に配布される WebView2 ランタイムを定期的に更新します。 修正済みバージョンのアプローチでは、WebView2 ランタイムのレジストリ キーは使用されません。

修正済みバージョンのバイナリは 250 MB を超え、アプリ パッケージをその量大きくします。

修正済みバージョン配布モードを使用するには、次のコマンドを実行します。

  1. パッケージとして、WebView2 ランタイムのダウンロードから 修正済みバージョンの WebView2 ランタイムをダウンロードします。

    最新および 2 番目に更新されたメジャー リリースの最もパッチが適用されたバージョンは、このサイトからダウンロードできます。 必要なバージョンのアーカイブ コピーを保管します。

  2. コマンドライン コマンド expand {path to the package} -F:* {path to the destination folder} を使用するか、WinRAR などの解凍ツールを使用して、WebView2 ランタイム パッケージを解凍します。 この方法では正しいフォルダ構造が生成されない可能性があるため、エクスプローラーによる解凍は避けてください。

  3. アプリのインストール中にターゲット コンピューターに展開する、圧縮解除された修正済みバージョン のバイナリをアプリ パッケージにすべて含めます。

  4. WebView2 環境を作成するときに、固定バージョンのバイナリへのパスを指定します。

    • Win32 C/C++ では、 CreateCoreWebView2EnvironmentWithOptions 関数を使用して環境を作成できます。 browserExecutableFolder パラメーターを使用して、msedgewebview2.exe を含むフォルダーへのパスを示します。

    • .NET の場合、WebView2 Source プロパティを有効にする前に環境を指定する必要があります。 .NET では、次のいずれかの方法で環境を指定できます。

      • WebView2 要素に CreationProperties (WPF/WinForms) プロパティを設定します。 CoreWebView2CreationProperties (WP /WinForms) クラスの BrowserExecutableFolder メンバーを使用して、固定バージョンのバイナリへのパスを示します。

      • または、EnsureCoreWebView2Async (WPF/WinForms) を使用して環境を指定します。 CoreWebView2Environment.CreateAsyncbrowserExecutableFolder パラメーターを使用して、固定バージョンのバイナリへのパスを指定します。

    • 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);
      
  5. 固定バージョンのバイナリをアプリにパッケージ化して配付します。 必要に応じてバイナリを更新します。

    • WinUI の場合、これには、コード エディターでプロジェクト ファイル (.csproj) を開き、プロジェクト タグ内に次のコードを追加することが含まれる場合があります。

      <ItemGroup>
         <Content Include="FixedRuntime\(version number)\\**\*.*">
         <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
         </Content>
      </ItemGroup>
      

      bin\**designated architecture**\Release フォルダーに、ランタイム ファイルが含まれる FixedRuntime\(バージョン番号) フォルダーが一致することを確認します。

固定バージョンの既知の問題

  • 現在、修正済みバージョンはネットワークの場所または UNC パスから実行できません。

  • 固定バージョンの WebView2 ランタイムをクライアントにインストールすると、MicrosoftPlayReady が機能しなくなります。 PlayReady のセットアップを次のように修正します。

    1. ユーザーのデバイスに固定バージョンパッケージを展開するパス (以下に表示する場所など) を見つけます。

      D:\myapp\Microsoft.WebView2.FixedVersionRuntime.87.0.664.8.x64
      
    2. ユーザーのデバイスで次のコマンドを実行します:

      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)
      

      これで PlayReady はユーザーのデバイスで動作しているはずです。

    3. PlayReady が正しくインストールされていることを確認するには、FixedVersionフォルダーの [セキュリティ] タブで、以下に示すように、ALL APPLICATION PACKAGES および ALL RESTRICTED APPLICATION PACKAGES にアクセス許可が付与されていることを確認します。

      PlayReady のアクセス許可

アプリと一緒に出荷するファイル

WebView2Loader コードがアプリに同梱されている必要があります。 これは、静的 WebView2Loader.lib をアプリのバイナリにリンクするか、アプリのアーキテクチャに一致する WebView2Loader.dll を含めることで実行できます。 通常、これは WebView2 SDK で .targets ファイルを使用するときに VisualStudio によって自動的に処理されますが、アプリで公開するファイルを手動で指定する必要がある場合もあります。

WebView2Loader.dll ネイティブでアーキテクチャ固有のバイナリであるため、アプリの実行を期待するこのバイナリのすべてのフレーバーを含める必要があります。 次に、例を示します。

  • x86 の場合、WebView2Loader.dll の x86 バージョンを含めます。

  • AnyCPU を使用するマネージド アプリの場合、WebView2Loader.dll のx86、x64、および arm64 バージョンを含めます。 正しいバージョンの 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)