次の方法で共有


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

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

Overview

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

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

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

Prerequisites

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

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

安定版

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

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

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

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

プレビュー バージョン

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

Deployment API を呼び出す

Windows アプリ SDK の初期化」も参照してください。

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

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

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

Important

Windows App SDK バージョン 1.0 では、完全信頼または packageManagement 制限付き機能を持つパッケージ アプリにのみ、Deployment API を使用して Main パッケージと Singleton パッケージの依存関係をインストールするアクセス許可があります。 部分信頼パッケージ アプリのサポートは、今後のリリースで提供される予定です。

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

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

Important

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

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

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

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

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

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

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

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