最新のWindows機能を利用するために、WPF、Windows フォーム、または Win32 アプリを書き直す必要はありません。 Windows アプリ SDKと広範なWindows プラットフォームは、独自のペースで段階的に導入できるモジュール型の機能を提供します。
次の表を使用して、状況に適した開始点を見つけます。
モダン化のパスを選択する
| 行いたいこと | 推奨される方法 |
|---|---|
| WPFまたは Win32 アプリにモダン UI コントロール (Fluent、角丸、ダーク モード) を追加する | WPF アプリでの WinUI コントロールのホスト (XAML Islands) |
| WPFまたは WinForms アプリでWindowsプラットフォーム機能 (通知、共有、ファイル ピッカー) を使用する | デスクトップ アプリで API をWindows ランタイム呼び出します |
| Microsoft Storeまたはエンタープライズ展開用にアプリをパッケージ化する | MSIX を使用してデスクトップ アプリをパッケージ化する |
| パッケージ ID (プッシュ通知、バックグラウンド タスク、アプリ拡張機能、Windows AI API、共有ターゲットなど) を必要とする機能のロックを解除する | パッケージ化されていないアプリに ID を付与する |
| アプリをWindows 11シェル機能 (スナップ レイアウト、コンテキスト メニュー、タスク バー) と統合する | Windows 11機能を使用した統合 |
| 時間の経過と共に WinUI 3 を使用して完全に最新のアプリに移行する | WinUI 3 への移行 |
| デスクトップ アプリにデバイス上の AI 機能を追加する | Windows AI Foundry |
Windows アプリ SDKとは
Windows アプリ SDK は、任意のデスクトップ アプリ (WPF、Windows フォーム、Win32、WinUI 3) から最新のWindows プラットフォーム機能にアクセスするための推奨される方法です。 OS リリース サイクルから切り離された、Windows 10とWindows 11で動作する一貫性のあるバージョン管理された API のセットが提供されます。
UI フレームワークを変更することなく、既存のアプリでWindows アプリ SDKを使用できます。 NuGet パッケージとして追加し、既存のコードと共にその API を呼び出します。
完全な書き換えなしでモダン UI を追加する
Windows アプリ SDKを使用して、WinUI 3 コントロールを既存のWPFまたは Win32 アプリ ウィンドウ内でホストできます。 これにより、アプリ全体を移行することなく、一度に 1 つのウィンドウまたはダイアログで UI を段階的に最新化できます。
既存のアプリで WinUI 3 コントロールをホストする方法については、「デスクトップ アプリ で WinRT XAML コントロールをホストする (XAML Islands)」を参照してください。 低レベルの視覚効果とアニメーションについては、「 ビジュアル レイヤーを使用してデスクトップ アプリをモダン化する」を参照してください。
Windows ランタイム API を呼び出す
プッシュ通知、共有コントラクト、ファイル ピッカー、Bluetoothなどの多くのWindows プラットフォーム機能は、Windows ランタイム (WinRT) API を介して公開されます。 これらの API は、WPF、Windows フォーム、C++ Win32 アプリから直接呼び出すことができます。
詳細については、「Call Windows ランタイム API in desktop apps」を参照してください。
MSIX を使用したパッケージ
MSIX を使用してアプリをパッケージ化すると、最新の信頼性の高いインストール エクスペリエンス、クリーン アンインストール、自動更新、Microsoft Storeおよびエンタープライズ展開パイプラインへのアクセスが提供されます。 MSIX パッケージ化は、アプリのコードの最新化とは別に、ソース コードを変更することなく、MSIX を使用してWPFまたは Win32 アプリをパッケージ化できます。
詳細については、「コードからの MSIX パッケージの構築」を参照してください。
パッケージ ID が必要な機能
プッシュ通知、バックグラウンド タスク、アプリ拡張機能、共有ターゲット、Windows AI Foundry API、ファイルの関連付け、スタートアップ タスクなど、一部のWindowsプラットフォーム機能では、実行時にアプリに package IDが必要です。 完全な MSIX パッケージ化なしで、パッケージ化されていないアプリに ID を付与できます。 このアプローチは、 スパース パッケージ または 外部の場所を含むパッケージと呼ばれることもあります。
詳細については、以下を参照してください:
Windows 11 シェル機能との統合
Windows 11では、スナップ レイアウト、更新されたコンテキスト メニュー、丸いウィンドウの角、タスク バーの統合など、新しいシェル統合ポイントが導入されています。 これらの多くは、コードを変更せず、パッケージ化されていないデスクトップ アプリで使用できます。 他のユーザーには、パッケージ化拡張機能が必要です。
詳細については、「パッケージ拡張機能を使用したWindowsを使用してデスクトップ アプリを統合するを参照してください。
WinUI 3 への移行
より大きな最新化作業を計画している場合、または個別のモジュールとして新機能を構築する場合は、WinUI 3 とWindows アプリ SDKを使用して新しいコンポーネントを構築することを検討してください。 WinUI 3 は、Windows デスクトップ アプリ用の最新のネイティブ UI フレームワークであり、新しい開発に推奨されるパスです。
最初の WinUI 3 アプリの作成をご覧ください。
Windows developer