デプロイの概要

このセクションのトピックでは、さまざまな種類の Windows アプリの展開に関するオプションとガイダンスを紹介します。

アプリをパッケージ化することの長所と短所

まず、アプリをパッケージ化するかどうかを決定します。

  • パッケージ アプリ。 パッケージ アプリは、実行時にパッケージ ID を持つ唯一の種類です。 バックグラウンド タスク、通知、ライブ タイル、カスタム コンテキスト メニュー拡張機能、共有ターゲットなど、多くの Windows 拡張機能にはパッケージ ID が必要です。 これは、オペレーティング システム (OS) で対応する API の呼び出し元を識別できる必要があるためです。 「パッケージ ID が必要な機能」を参照してください。
    • 通常、パッケージ アプリのプロセスは、軽量のアプリ コンテナー内で実行され、ファイル システムとレジストリ仮想化を使って分離されています (「レガシ アプリの AppContainer」と「MSIX AppContainer アプリ」をご覧ください)。 ただし、アプリ コンテナー内で実行されないように、パッケージ化されたアプリを構成できます。
    • パッケージ アプリは、MSIX テクノロジを使用してパッケージ化されます (「MSIX とは」を参照)。
    • 外部の場所でパッケージ化されたアプリ。 ただし、一部の既存のアプリはすべてのコンテンツを MSIX パッケージに格納する準備がまだできていないので、アプリを外部の場所でパッケージ化するためのオプションがあります。 それを使用すると、アプリはパッケージ ID を持つことができ、これにより必要な機能を使用できます。 詳しくは、「外部の場所でパッケージ化してパッケージ ID を付与する」をご覧ください。
    • パッケージ化されたアプリも、MSIX を使って "インストール" されます。 ただし、"外部の場所でパッケージ化" を選択した場合は、それを "独自のインストーラーの持ち込み" モデルと考えることができます。 そのため、そのオプションを使用するためのインストーラーの作業がいくつか "あります"。 これは基本的に、パッケージ化されたアプリとパッケージ化されていないアプリの間のハイブリッド オプションです。
  • 非パッケージ アプリ。 パッケージ化されないアプリを作成することで MSIX の使用を完全にオプトアウトできます。 ただし、非パッケージ アプリは実行時にパッケージ ID を "持っていない" ことに注意してください。そのため、特定の Windows 機能を使えません。(「パッケージ ID が必要な機能」を参照。)

各種類のアプリを Microsoft Store に発行し、その方法で、または Windows アプリ インストーラーを使用してインストールできます。

重要

アプリをパッケージ化し、アプリ コンテナー内で実行されるように構成することを推奨しています。 顧客にとってシームレスで、現代的で、信頼性の高いインストール体験および更新体験となります。実行時に安全です。

パッケージ化 (および必要に応じてアプリ コンテナー内で実行) 外部の場所でパッケージ化、またはパッケージ化されていない
長所 ユーザーはアプリのインストール、アンインストール、および更新を簡単に行うことができます。 アンインストールはクリーンです。アプリがアンインストールされると、システムはインストール前と同じ状態に復元されます。成果物が残りません。 この種のアプリでは、増分更新と自動更新もサポートされています。 また、Microsoft Store は、この種のアプリ用に最適化されています (それらは Microsoft Store 内でも外でも使用できます)。

パッケージ ID を持つことの利点があります。
これらのオプションは、アプリの種類、呼び出し可能な API、レジストリやファイル システムへのアクセスという点ではアプリは制限されません。

外部の場所でパッケージ化すると、パッケージ ID を持つ利点が得られます。
短所 アプリは、アプリの種類や、システム内で指定できる機関に関して制限されます。 たとえば、NT サービスは使用できません。 プロセス間通信 (IPC) オプションは制限されています。Microsoft Store に公開する場合、特権および昇格されたアクセスは制限されます。ファイルおよびレジストリ アクセスは仮想化されます (ただし、「柔軟な仮想化」も参照してください)。 場合によっては、企業のポリシーで Microsoft Store を無効にすることにより更新プログラムを無効にすることができます。 これらのオプションを使用するアプリでは、アプリがアンインストールされた後に古い構成データやソフトウェアが蓄積される危険性があります。 これは、顧客やシステムにとって問題となる可能性があります。

通常、アプリのインストールおよび更新では .exe または .msi ファイルを使用するか、他のインストールおよび更新ソリューションを介して、カスタム インストーラー、ClickOnce、または xcopy のデプロイを使用します。

非パッケージ アプリには、パッケージ ID を持つ利点がありません。

パッケージのインストール場所、作業ディレクトリ、ファイルとレジストリの仮想化について詳しくは、「Windows でパッケージ化されたデスクトップ アプリが動作するしくみについて」をご覧ください。

Windows App SDK を使用する

アプリをパッケージ化するかどうかを決定したら、次に、アプリで Windows App SDK を使用するかどうかを決定できます。 「Windows App SDK 展開の概要」を参照してください。

Win32 および .NET デスクトップ アプリ

Win32 デスクトップ アプリ ("クラシック デスクトップ アプリ" とも呼ばれます) または .NET アプリ (Windows Presentation Foundation (WPF) や Windows フォーム (WinForms) を含む) を作成する場合は、MSIX を使用してアプリのパッケージ化と展開を行うことができます。

他のインストール テクノロジを使用して、これらの種類のアプリをパッケージ化し、展開することもできます。

UWP アプリ

UWP アプリは、MSIX を使用してパッケージ化され、展開されます。