WebView2 を使用したアプリの配布

WebView2 アプリを配布するときには、アプリが起動される前に、バッキング web プラットフォーム ( WebView2 Runtime) が存在することを確認します。 この記事では、WebView2 ランタイムをインストールする方法について説明し、WebView2 アプリ用の2つの配布モード ( EvergreenFixed のバージョン) を使用します。

Evergreen 配布モード

注意

ほとんどの開発者は、Evergreen 配布モードをお勧めします。

Evergreen 配布モードでは、アプリが最新の機能とセキュリティ更新プログラムを利用していることが保証されます。 次のような特徴があります。

  • 基になる web プラットフォーム \ (WebView2 Runtime) は、追加の作業を行わなくても自動的に更新されます。
  • Evergreen 配布モードを使うすべてのアプリは、Evergreen WebView2 ランタイムの共有コピーを使用します。これにより、ディスク領域を節約できます。

WebView2 ランタイムについて

WebView2 ランタイムは再配布可能なランタイムであり、WebView2 アプリのバッキング web プラットフォームとして機能します。 この概念は、Visual C++ や C++/.NET アプリの .NET ランタイムに似ています。 ランタイムには変更された Microsoft Edge \ (Chromium ) バイナリが含まれています。これは、アプリに対して適切に調整され、テストされています。 ランタイムは、インストール時にユーザーに表示されるブラウザーとしては表示されません。 たとえば、ユーザーがブラウザーのデスクトップショートカットまたはスタートメニューエントリを持っていない場合などです。

開発およびテスト中には、いずれかの方法でバッキング web プラットフォームとして使うことができます。

  • WebView2 ランタイム
  • 任意の Insider \ (永続的でない) Microsoft Edge \ (Chromium) ブラウザチャネル

運用環境では、アプリが起動される前に、ランタイムがユーザーデバイスに存在することを確認する必要があります。 Microsoft Edge の厩舎チャネルは、WebView2 の使用には使用できません。 この決定により、アプリは、アプリが運用環境のブラウザーに依存しないようにします。

次の理由により、ブラウザーに依存しないようにします。

  • Microsoft Edge \ (Chromium ) は、すべてのユーザーデバイスに存在するとは限りません。 たとえば、Windows Update から切断された、または Microsoft によって直接管理されていないデバイス (Enterprise と EDU market の大部分) に、ブラウザーが表示されない場合があります。 WebView2 ランタイムの配布を許可することで、アプリの前提条件として、ブラウザーに依存することを避けることができます。
  • ブラウザーやアプリにはさまざまなユースケースがあるため、ブラウザーで依存関係を取得すると、アプリに意図しない副次的な影響が生じる可能性があります。 たとえば、IT 管理者は、内部の web サイトとの互換性を維持するためにブラウザーをバージョン管理することができます。 WebView2 ランタイムを使うと、ブラウザーの更新がアクティブに管理されている間も、アプリは evergreen を維持できます。
  • ブラウザーとは異なり、アプリのシナリオに対してランタイムは開発およびテストされていますが、場合によっては、ブラウザーでまだ使用できないバグ修正が含まれていることがあります。

今後、Evergreen WebView2 Runtime は、Windows の将来のリリースと共に出荷される予定です。 ランタイムがより汎用的に使用できるようになるまで、実行中のアプリでランタイムを展開します。

Evergreen WebView2 ランタイムの展開

デバイス上のすべての Evergreen アプリには、1つの Evergreen WebView2 ランタイムのインストールのみが必要です。 WebView2 Runtime ダウンロードページには、多数のツールが用意されています。 Evergreen ランタイムの展開に役立つツールを次に示します。

  • WebView2 Runtime ブートストラップは、ごくわずかな \ (約 2 MB \ 2 MB) インストーラーです。 WebView2 Runtime ブートストラップは、ユーザーのデバイスアーキテクチャと一致する Microsoft サーバーから Evergreen ランタイムをダウンロードしてインストールします。
  • ブートストラップをプログラムでダウンロードするためのリンクを使用します。
  • WebView2 Runtime Standalone Installer は、オフライン環境に Evergreen WebView2 ランタイムをインストールする完全なインストーラーです。

現時点では、ブートストラップとスタンドアロンインストーラーは両方ともコンピューターごとにインストールをサポートします。昇格が必要です。 昇格せずにインストーラーを実行すると、ユーザーにアクセス許可の昇格を促すメッセージが表示されます。

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

オンラインのみの展開

ユーザーがインターネットにアクセスできると見なされるオンラインのみの展開シナリオがある場合は、次の手順を実行します。

  1. アプリのセットアップ中に、ランタイムが既にインストールされていることを確認します。 確認するには、次のいずれかの操作を実行します。
    • レジストリが存在するかどうか、または空でないかどうかを調べ pv (REG_SZ) null ます。 pv (REG_SZ)次の場所で検索します。

      64ビット版の Windows の場合

      HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
      

      32ビット版の Windows の場合

      HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
      
    • GetAvailableCoreWebView2BrowserVersionStringを実行し、がになっていることを確認し versionInfo NULL ます。

  2. ランタイムがインストールされていない場合は、リンクを使用してブートストラップをプログラムでダウンロードします。
  3. 昇格したプロセスまたはコマンドプロンプトから、 MicrosoftEdgeWebview2Setup.exe /silent /install サイレントインストールのためにブートストラップを呼び出します。

前のワークフローには、次の利点があります。

  • 必要な場合、またはインストーラーをパッケージ化する必要がない場合にのみ、ランタイムをインストールします。
  • ブートストラップは、デバイスアーキテクチャを自動的に検出し、対応するランタイムをインストールします。
  • 実行時にサイレントモードでインストールします。

必要に応じてブートストラップをプログラムでダウンロードする代わりに、アプリと共にパッケージ化することもできます。

オフライン展開

アプリの展開がオフラインで動作する場合は、次の手順を実行します。

  1. スタンドアロンインストーラーをダウンロードします。

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

  3. アプリのセットアップ中に、ランタイムが既にインストールされていることを確認します。 確認するには、次のいずれかの操作を実行します。

    • レジストリが存在するかどうか、または空でないかどうかを調べ pv (REG_SZ) null ます。 pv (REG_SZ)次の場所で検索します。

      64ビット版の Windows の場合

      HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
      

      32ビット版の Windows の場合

      HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}
      
    • GetAvailableCoreWebView2BrowserVersionStringを実行し、がになっていることを確認し versionInfo NULL ます。

  4. ランタイムがインストールされていない場合は、スタンドアロンインストーラーを実行します。 サイレントインストールを実行する場合は、昇格したプロセスからインストーラーを実行するか、または [コピー] をクリックして、次のコマンドを実行します。

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

Evergreen モードでの互換性を維持する

Web は絶えず進化しています。 Evergreen WebView2 Runtime は最新の機能とセキュリティ修正プログラムを提供するために最新の状態に維持されます。 アプリの web との互換性を維持するために、テストインフラストラクチャを設定する必要があります。

未安定の Microsoft Edge チャネル (ベータ/開発/カナリア) では、WebView2 Runtime の次の機能についてのヒントを見ることができます。 Microsoft Edge 用の web サイトを開発する場合と同様に、WebView2 アプリを定期的にテストする必要があります。 WebView2 アプリを、非永続的なチャネルのいずれかに対してテストし、問題が発生した場合にアプリを更新したり、 問題を報告 したりします。 通常、開発者とベータ版が推奨されるチャネルです。 適切なチャネルを判断するには、「 Microsoft Edge チャネルの概要」に移動します。 テスト環境では、安定してい ない Microsoft Edge チャネル をダウンロードでき regkey ます。また、または環境変数を使用して、テストアプリのチャネルの優先順位を指定します。 詳細については、 CreateCoreWebView2EnvironmentWithOptionsに移動してください。 また、 Webdriver を使って WebView2 のテストを自動化することもできます。

固定バージョンの配布モード

厳密な互換性要件を持つ制約のある環境では、固定バージョンの配布モードの使用を検討してください。 WebView2 ランタイムの特定のバージョンを、固定バージョンの配布モードで選択してパッケージ化します。 アプリのランタイム更新のタイミングを指定できます。 修正済みのバージョン配布モードでは、自動更新は取得されません。 アプリとランタイムの更新を計画します。

注意

修正されたバージョンの配布モードは、以前は "自分で作成" と呼ばれていました。

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

  1. 修正済みバージョンパッケージをダウンロードします。
  2. コマンドライン expand {path to the package} -F:* {path to the destination folder} または WinRAR などのツールを使用してパッケージを展開します。 適切なフォルダー構造が生成されない可能性があるため、エクスプローラーを使用して伸長しないようにします。
  3. プロジェクトに解凍された修正バージョンバイナリを含めます。
  4. WebView2 環境の作成時に、修正されたバージョンのバイナリへのパスを指定します。
    • Win32 C/c + + の場合は、 CreateCoreWebView2EnvironmentWithOptions 関数を使って環境を作成することができます。 パラメーターを使用して、が browserExecutableFolder 含まれているフォルダーへのパスを指定し msedgewebview2.exe ます。

    • .NET の場合は、次のいずれかのオプションを使用して環境を指定できます。

      注意

      WebView2 プロパティを有効にするには、環境を指定する必要があり Source ます。

      • CreationPropertiesWebView2 要素で \ (WPF / WinForms) プロパティを設定します。 BrowserExecutableFolder CoreWebView2CreationProperties \ (WPF / WinForms) クラスのメンバーを使って、修正されたバージョンのバイナリへのパスを指定します。
      • EnsureCoreWebView2AsyncWPF / 環境を指定するには、\ (WPFWinForms) を使用します。 CoreWebView2Environment のパラメーターを使って、修正された browserExecutableFolder バージョンのバイナリへのパスを指定しますCoreWebView2Environment.CreateAsync
  5. アプリで、修正されたバージョンのバイナリをパッケージ化して配布します。 必要に応じてバイナリを更新します。

修正されたバージョンの既知の問題

Evergreen ランタイムと比べると、修正されたバージョンにはインストールプロセスがないため、 Microsoft 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)
    
  3. PlayReady は、ユーザーのデバイスで現在動作している必要があります。 [修正済みバージョン] フォルダーの [セキュリティ] タブに、との権限が含まれている必要があり ALL APPLICATION PACKAGES ALL RESTRICTED APPLICATION PACKAGES ます。

    PlayReady のアクセス許可