次の方法で共有


フレームワークに依存するアプリの展開アーキテクチャと概要

この記事では、Windows App SDK デプロイのアーキテクチャの概要について説明します。 以下の概念は、主に Windows App SDK フレームワークに依存するアプリに適用されます。 フレームワークに依存するアプリは、ターゲット コンピューターに存在する Windows App SDK ランタイムに依存します。

フレームワークに依存するアプリを配布するには、主に次の 2 つのオプションがあります。

アプリのデプロイ方法 要求事項
梱包済み - パッケージ マニフェストで Framework パッケージへの依存関係を宣言する必要があります。
- 展開 API は Microsoft Store 分散アプリに必要であり、ランタイムの依存関係が確実にインストールされるように、ストア以外の分散アプリには推奨されます。
外部の場所でパッケージ化されているか、パッケージ化されていない - インストーラーを使用するか、必要な MSIX パッケージを直接インストールしてランタイムを配布する必要があります。
- 追加のランタイム要件: ブートストラップ API を使用して Windows App SDK ランタイムへのアクセスを初期化する必要があります。

これらの要件の詳細については、次の記事を参照してください。

キーワード

次のセクションでは、Windows App SDK の展開の主な用語と、これらのパッケージの一部に関する追加の詳細を定義します。

任期 定義
Windows App SDK ランタイム Windows App SDK を使用するためにアプリに必要な MSIX パッケージ。 これらのパッケージには、Framework、Main、Singleton、DDLM が含まれます。 使用されている機能とアプリのデプロイ方法に応じて、ターゲット コンピューター上にこれらのパッケージの特定のセットが必要になります。
フレームワーク パッケージ アプリ (ほとんどの Windows App SDK 機能) によって実行時に使用されるバイナリが含まれています。 フレームワークには、アプリが最新バージョンの Windows App SDK を自動的にインストールできるようにするブートストラップ コンポーネントが含まれています。これは、通常のリリース周期で更新されます。
メインパッケージ 動的な依存関係を追跡し、Microsoft Store からフレームワーク パッケージの自動更新を有効にするバックグラウンド タスクを含むパッケージ。
シングルトン パッケージ バックグラウンド タスク、サービス、アプリ拡張機能、およびプッシュ通知などのフレームワーク パッケージに含まれていないその他のコンポーネントが含まれています。 これは通常、アプリ間で仲介される 1 つの実行時間の長いプロセスです。
動的依存関係有効期間マネージャー (DDLM) パッケージ 外部の場所にあるか、パッケージ化されていないアプリが使用されている間に、OS が MSIX パッケージのサービス更新を実行できないようにします。
ブートストラップ アプリ内で使用されるローカルバイナリは、外部の場所と未パッケージ化アプリを含むアプリにより必要に応じて、最適な Windows App SDK バージョンを特定して読み込みます。
プロビジョニング 他のユーザーが繰り返しインストールする必要をなくすために、システム全体でパッケージ (ファイルとレジストリ キーを含む) をインストールおよび登録するプロセス。 OS の一部として実行することも、アプリのインストール中に実行することもできます。
インストーラー フレームワーク、メイン、シングルトン、および DDLM パッケージをデプロイする .exe インストーラーを参照します。
MSIX ユーザーが Microsoft Store または Web サイトから直接、ユーザーごとにアプリを安全にインストールできるようにする最新のインストーラー テクノロジ。 エンタープライズ PC または共有 PC では、PowerShell と MDM を使用して、すべてのユーザーにアプリをインストールできます。

フレームワーク パッケージ

Windows App SDK を使用するアプリをビルドすると、アプリは 、フレームワーク パッケージを介してエンド ユーザーに配布される一連の Windows App SDK ランタイム コンポーネントを参照します。 フレームワーク パッケージを使用すると、アプリは、アプリ パッケージにバンドルするのではなく、ユーザーのデバイス上の単一の共有ソースを介して Windows App SDK コンポーネントにアクセスできます。 フレームワーク パッケージには、DLL や API 定義 (COM と Windows ランタイムの登録) などの独自のリソースも含まれています。 これらのリソースはアプリのコンテキストで実行されるため、アプリの機能と特権を継承し、独自の機能や特権をアサートしません。 フレームワーク パッケージの依存関係の詳細については、「 MSIX フレームワーク パッケージと動的な依存関係」を参照してください。

Windows App SDK フレームワーク パッケージは、Microsoft Store を通じてエンド ユーザーに展開される MSIX パッケージです。 これは、セキュリティと信頼性の修正プログラムを含む可能性があるサービス リリースで簡単かつ迅速に更新できます。 次の図に示すように、Windows App SDK を使用するすべてのフレームワークに依存するアプリは、フレームワーク パッケージの共有インスタンスに依存します。

アプリが Windows App SDK フレームワーク パッケージにアクセスする方法の図

Windows App SDK フレームワーク パッケージの新しいバージョンが処理されると、フレームワークに依存するすべてのアプリが新しいバージョンに更新され、コピーを再配布する必要はありません。 Windows は、リリース時に最新バージョンのフレームワークに更新され、アプリは再起動時に最新のフレームワーク パッケージ バージョンを自動的に参照します。 古いフレームワーク パッケージ バージョンは、システム上のアプリによって実行またはアクティブに使用されなくなるまで、システムから削除されません。

アプリが Windows App SDK フレームワーク パッケージの更新プログラムを取得する方法の図

アプリの互換性は Microsoft と Windows App SDK に依存するアプリにとって重要であるため、Windows App SDK フレームワーク パッケージは セマンティック バージョン 2.0.0 の規則に従います。 つまり、Windows App SDK のバージョン 1.0 をリリースした後、Windows App SDK フレームワーク パッケージはマイナーバージョンとパッチ バージョンの変更の互換性を保証し、重大な変更はメジャー バージョンの更新プログラム間でのみ発生することを意味します。

シングルトン パッケージ

シングルトン パッケージを使用すると、実行時間の長い 1 つのプロセスで、複数のアプリで使用されるサービスを処理できます。このサービスは、異なるバージョンの Windows App SDK で実行されている可能性があります。

Windows App SDK シングルトンは、パッケージ化されていないアプリとパッケージ化された Win32 アプリケーションの を 有効にするために必要です。Windows バージョンが 20H1 未満の場合は、既存の UWP PushNotificationTrigger および ToastNotificationActionTrigger クラスではサポート できません。 フレームワーク パッケージでサポートできない Windows App SDK の今後の機能は、Singleton パッケージに追加されます。

パッケージ化されていないアプリの追加要件

ブートストラッパー

ブートストラップは、パッケージ化された外部の場所またはパッケージ化されていないアプリに含まれている必要があるライブラリです。 ブートストラップ API を提供します ( 外部の場所またはパッケージ化されていないアプリに Windows App SDK ランタイムを使用するを参照)。これにより、パッケージ化されていないアプリで次の重要なタスクを実行できます。

  • Windows App SDK フレームワーク パッケージの動的依存関係有効期間マネージャー (DDLM) を初期化します。
  • Windows App SDK フレームワーク パッケージを見つけて、アプリのパッケージ グラフに読み込みます。

これらのタスクを実行するために、nuget パッケージはモジュール初期化子を利用してブートストラップを接続します。 プロジェクト ファイルに <WindowsPackageType>None</WindowsPackageType> を設定するだけです。 高度なシナリオでは、初期化を制御する場合は、アプリのスタートアップ コードでブートストラップ API を直接呼び出すことができます ( 「チュートリアル: 外部の場所でパッケージ化されたアプリでブートストラップ API を使用する、または Windows アプリ SDK を使用するパッケージ化されていないアプリでブートストラップ API を使用する」を参照)、パッケージ化されていないアプリのシステムを適切に初期化できるようにします。 WinUI、アプリ ライフサイクル、MRT Core、DWriteCore などの Windows App SDK 機能を使用するには、アプリでブートストラップ API を使用する必要があります。

Windows App SDK 1.0 リリースのブートストラップ ライブラリには、次のものが含まれます。

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ および C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (C# ラッパー)

動的依存関係有効期間マネージャー (DDLM)

DDLM の目的は、パッケージ化されていないアプリで使用中の Windows App SDK フレームワーク パッケージのサービスを防ぐことです。 これには、その機能を提供するために、アプリの起動時にブートストラップによって初期化される必要があるサーバーが含まれています。

Windows App SDK フレームワーク パッケージのバージョンとアーキテクチャごとに 1 つの DDLM があります。 つまり、x64 コンピューターでは、両方のアーキテクチャのアプリをサポートするために、と バージョンの両方の DDLM が使用されている可能性があります。

その他の要件