次の方法で共有


フレームワークに依存するパッケージ アプリのWindows アプリ SDK展開ガイド

この記事では、Windows アプリ SDKを使用するフレームワーク依存のパッケージ アプリ ( MSIX とはを参照) の展開に関するガイダンスを提供します。 その他のフレームワーク依存パッケージ オプションの同等のトピックは、外部の場所またはパッケージ化されていないフレームワーク依存アプリのためのWindows アプリ SDKデプロイメントガイドです。

Overview

既定では、Visual Studio で WinUI 3 テンプレートのいずれかを使用してプロジェクトを作成すると、プロジェクトは、単一プロジェクト MSIX (単一プロジェクト MSIX を使用してアプリをパッケージ化するを参照) または Windows アプリケーション パッケージ プロジェクト (MSIX パッケージ用のデスクトップ アプリケーションをセットアップするを参照) を使用して MSIX パッケージにアプリをビルドするように構成されています。 その後、 Visual Studio でデスクトップまたは UWP アプリをパッケージ化します。 アプリの MSIX パッケージをビルドした後、MSIX デプロイを管理するいくつかのオプションがあります。

パッケージ アプリがWindows アプリ SDKを使用するときに必要になるパッケージの詳細については、Windows アプリ SDK の Deployment アーキテクチャに関するページを参照してください。 これには、 Framework、 Main、 Singleton のパッケージが含まれます。これはすべて Microsoft によって署名および公開されています。 パッケージ アプリをデプロイするための主な要件は 2 つあります。

  1. Windows アプリ SDK フレームワーク パッケージをデプロイします。
  2. Deployment API を呼び出します。

Prerequisites

  • パッケージ 化されたアプリの場合、VCLibs フレームワーク パッケージの依存関係が要件です。 詳細については、 デスクトップ ブリッジの C++ ランタイム フレームワーク パッケージを参照してください。
  • C#. .NET 6 以降が必要です。 詳細については、「.NET ダウンロード」を参照してください。

Windows アプリ SDK フレームワーク パッケージを展開する

Windows アプリ SDK フレームワーク パッケージには、実行時に使用されるWindows アプリ SDK バイナリが含まれており、アプリケーションと共にインストールされます。 フレームワークには、Windows アプリ SDKのチャネルごとに異なるデプロイ要件があります。

安定版

開発用コンピューターにWindows アプリ SDK NuGet パッケージの安定したリリース バージョンをインストールし、指定された WinUI プロジェクト テンプレートのいずれかを使用してプロジェクトを作成すると、生成されたパッケージ マニフェストには、フレームワーク パッケージへの依存関係を指定する PackageDependency 要素が含まれます。

ただし、別の Windows アプリケーション パッケージ プロジェクトを使用してアプリ パッケージを手動でビルドする場合は、次のように、 ファイルで Application (package).wapproj を宣言する必要があります。

<ItemGroup>
   <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.8.260209005">
       <IncludeAssets>build</IncludeAssets>
   </PackageReference>
</ItemGroup>

そのパッケージの依存関係により、アプリが別のコンピューターに展開されるときにフレームワーク パッケージがインストールされます。

プレビュー バージョン

Windows アプリ SDK NuGet パッケージのプレビュー リリース バージョンを開発用コンピューターにインストールすると、ビルド時に Windows アプリ SDK フレームワーク パッケージのプレビュー バージョンが NuGet パッケージの依存関係として展開されます。

Deployment API を呼び出す

Windows アプリ SDK を初期化する も参照してください。

Deployment API は、Windows アプリ SDK フレームワーク パッケージによって提供され、Microsoft.Windows で使用できます。ApplicationModel.WindowsAppRuntime 名前空間。 Windows アプリケーション モデルでは、Main パッケージと Singleton パッケージへの依存関係の宣言はサポートされていません。 そのため、デプロイ API は次の理由で必要です。

  1. フレームワーク パッケージに含まれていない機能 (プッシュ通知など) に対して Singleton パッケージをデプロイする場合。
  2. メイン パッケージを展開するには、Microsoft Store からフレームワーク パッケージの自動更新を有効にします。

ストアを通じて配布 されない パッケージ アプリの場合、開発者は Framework パッケージの配布を担当します。 重要なサービス更新プログラムが配信されるように、Deployment API を呼び出することをお勧めします。 フレームワーク パッケージの外部で機能を使用する場合 (プッシュ通知など)、Singleton パッケージを展開する必要があることに注意してください (これは、Deployment API を使用するか、独自のインストール方法を使用して MSIX パッケージを再配布することによって行うことができます)。

Important

完全信頼または packageManagement 制限付き機能を持つパッケージ アプリにのみ、Deployment API を使用して Main パッケージと Singleton パッケージの依存関係をインストールするアクセス許可が付与されます。

アプリのプロセスが初期化された後、アプリが Singleton パッケージ (プッシュ通知など) を使用するランタイム機能Windows アプリ SDK使用する前に、Deployment API を呼び出す必要があります。 Deployment API の主なメソッドは、DeploymentManager クラスの静的な GetStatus メソッドと Initialize メソッドです。

  • GetStatus メソッドは、現在読み込まれているWindows アプリ SDK ランタイムの現在のデプロイ状態を返します。 現在のアプリでWindows アプリ SDK機能を使用する前に、ランタイム パッケージWindows アプリ SDKインストールするために必要な作業があるかどうかを確認するには、このメソッドを使用します。
  • Initialize メソッドは、必要なすべてのパッケージが、現在読み込まれているWindows アプリ SDK ランタイムで必要な最小バージョンに存在するかどうかを確認します。 パッケージの依存関係がない場合、メソッドは不足しているパッケージの登録を試みます。 Windows アプリ SDK 1.1 以降では、Initialize メソッドでは、Windows アプリ SDKランタイム パッケージを強制的にデプロイするオプションもサポートされています。 これにより 、Main ランタイム パッケージと Singleton ランタイム パッケージのプロセスがシャットダウンされ、サービスが中断されます (たとえば、プッシュ通知は、この期間中に通知を配信しません)。 Initialize は 1 回だけ呼び出す必要があります。 Visual Studioの InitializeStart Without Debugging および Start Debugging コマンドを使用して展開されたアプリに対して呼び出す必要はありません。

Important

Visual Studio プロパティ <WindowsAppSdkDeploymentManagerInitialize> の既定値は true です。 したがって、DeploymentManager.Initialize を明示的に呼び出す場合は、Visual Studio プロジェクト ファイルに <WindowsAppSdkDeploymentManagerInitialize>false</WindowsAppSdkDeploymentManagerInitialize> を設定します。

デプロイ API サンプル アプリ

DeploymentManager クラスの GetStatus メソッドと Initialize メソッドの使用方法に関する追加のガイダンスについては、使用可能なサンプル アプリを参照してください。

Deployment API サンプル アプリを調べる

インストール エラーに対処する

Windows アプリ SDK ランタイム パッケージのインストール中に Deployment API でエラーが発生した場合は、問題を説明するエラー コードが返されます。

たとえば、アプリが完全な信頼ではない場合、または packageManagement の制限付き機能がない場合は、 ACCESS_DENIED エラー コードが表示されます。 発生する可能性があるその他のエラー コードとその考えられる原因については、「Windows アプリのパッケージ化、展開、クエリのトラブルシューティングを参照してください。

エラー コードで十分な情報が提供されない場合は、詳細なイベント ログで詳細な診断情報を見つけることができます (診断 情報の取得を参照)。

診断できないエラーが発生した場合は、WindowsAppSDK GitHub リポジトリにエラー コードとイベント ログを含む問題を報告して、問題を調査できるようにします。