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

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

概要

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

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

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

前提条件

Windows App SDK フレームワーク パッケージをデプロイする

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

安定バージョン

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

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

<ItemGroup>
   <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.1">
       <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 パッケージを再配布することによって行うことができます)。

重要

Windows アプリ SDK バージョン 1.0 では、完全信頼または packageManagement 制限付き機能を持つパッケージ アプリにのみ、Deployment API を使用して Main パッケージと 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 ランタイム パッケージのプロセスがシャットダウンされ、サービスが中断されます (たとえば、プッシュ通知は、この期間中に通知を配信しません)。

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

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

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

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

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

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

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