この記事では、Windows アプリ SDKを使用するフレームワーク依存のパッケージ アプリ ( MSIX とはを参照) の展開に関するガイダンスを提供します。 その他のフレームワーク依存パッケージ オプションの同等のトピックは、外部の場所またはパッケージ化されていないフレームワーク依存アプリのためのWindows アプリ SDKデプロイメントガイドです。
Overview
既定では、Visual Studioの WinUI 3 テンプレートのいずれかを使用してプロジェクトを作成する場合、プロジェクトは、単一プロジェクト MSIX (単一プロジェクト MSIX を使用してアプリをパッケージ化するを参照) またはWindowsアプリケーション パッケージ プロジェクトを使用して MSIX パッケージにアプリをビルドするように構成されます (「Visual Studioで MSIX パッケージ化用のデスクトップ アプリケーションを設定する」を参照)。 その後、
パッケージ アプリがWindows アプリ SDKを使用するときに必要になるパッケージの詳細については、Windows アプリ SDK の
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 は次の理由で必要です。
- フレームワーク パッケージに含まれていない機能 (プッシュ通知など) に対して Singleton パッケージをデプロイする場合。
- メイン パッケージを展開するには、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 メソッドの使用方法に関する追加のガイダンスについては、使用可能なサンプル アプリを参照してください。
インストール エラーに対処する
Windows アプリ SDK ランタイム パッケージのインストール中に Deployment API でエラーが発生した場合は、問題を説明するエラー コードが返されます。
次の表に、Deployment API の一般的なエラー コードとその一般的な原因を示します。
| エラー コード | Name | 一般的な原因 |
|---|---|---|
| 0x80070005 | ACCESS_DENIED | アプリが完全に信頼されていないか、 packageManagement の制限付き機能がありません。 管理者特権で実行するか、必要な機能を追加します。 |
| 0x80073CF0 | ERROR_INSTALL_OPEN_PACKAGE_FAILED | MSIX パッケージが破損しているか、アクセスできません。 パッケージ ファイルがそのままであり、パスが正しいことを確認します。 |
| 0x80073CF3 | ERROR_INSTALL_PREREQUISITE_FAILED | 必要な依存関係パッケージがないか、互換性がありません。 VCLibs フレームワーク パッケージとその他の前提条件がインストールされていることを確認します。 |
| 0x80073D06 | パッケージが使用中のエラー | 1 つ以上のパッケージが使用中であり、更新できません。 Windows アプリ SDK ランタイムを使用してすべてのアプリを閉じ、再試行します。 |
| 0x80073CFB | ERROR_PACKAGE_ALREADY_EXISTS | パッケージのバージョンは既に登録されています。 これは情報です。アプリは続行できます。 |
| 0x80073CF9 | ERROR_INSTALL_FAILED | 一般的なインストール エラー。 詳細については、イベント ログを確認してください (以下を参照)。 |
ヒント
MSIX パッケージのインストール エラー コードの完全な一覧については、「Windows アプリのパッケージ化、展開、クエリのトラブルシューティング」を参照してください。
エラー コードで十分な情報が提供されない場合は、詳細なイベント ログで詳細な診断情報を見つけることができます (診断 情報の取得を参照)。 イベント ログは、アプリケーションとサービス ログ>Microsoft>>のイベント ビューアーにあります。
診断できないエラーが発生した場合は、WindowsAppSDK GitHub リポジトリにエラー コードとイベント ログを含む問題を報告して、問題を調査できるようにします。
関連トピック
Windows developer