Windows App SDK サポート

本稿は「Windows App SDK Support」の抄訳です。
 

QtにおけるWindows App SDK公式サポートの初リリースを発表いたします。

これまでのQtバージョンでは、開発者がWindows App SDKを手動で統合する必要がありましたが、Qt Creator 16 のリリースにより、このプロセスが大幅に簡素化され、開発者はWindows App SDKをQtアプリやライブラリにシームレスに利用できるようになります。

Windows App SDKとは?

Windows App SDK(以前はProject Reunionと呼ばれていました)は、最新のネイティブWindowsアプリケーションを構築するための統合開発プラットフォームを提供するMicrosoftのイニシアティブです。さまざまなツール、ライブラリ、フレームワークを統合し、アプリケーション開発を簡素化しながら、異なるバージョンのWindows間の互換性を確保します。このアプローチにより、開発者は単一のプロジェクトでWin32とユニバーサルWindowsプラットフォーム(UWP)の両方の環境を最大限に活用することができます。

主な機能とコンポーネント

  • WinUI(Windows UI ライブラリ):視覚的に魅力的で応答性の高いアプリケーションを構築するためのモダンなユーザーインターフェイスコントロールとスタイルを提供します。高DPIディスプレイ、タッチ入力、およびFluentデザインの原則をサポートし、ユーザーエクスペリエンスを向上させます。
  • WebView2:Microsoft Edge Chromiumエンジンを使用して、Webコンテンツをネイティブアプリケーションに統合します。ネイティブコードとともに、HTML、CSS、JavaScriptをシームレスに埋め込みます。
  • 高度なアプリケーションライフサイクル管理:アプリケーションのアクティベーション、バックグラウンドタスク、状態の復元を強力にサポートします。最適なパフォーマンスと効率的なリソース利用を促進します。
  • バージョン間の互換性:複数のコードベースを必要とせずに、幅広いバージョンのWindows上でアプリケーションを実行できます。開発の複雑性とメンテナンスの労力を軽減します。
  • 一貫したAPIの提供:最新のアプリケーション開発のための統一されたAPIセットを導入し、過去の断片的なアプローチに取って代わります。通知、ウィンドウ、ファイル処理などの高度なシステム機能へのアクセスを簡素化します。

セットアップ

Windows App SDK を Qt に統合するには、次の2つの方法があります。

1. Qt Creator を使う場合

詳細は、Qt Creator ドキュメントを参照してください。

2. コマンドラインを使う場合

空ディレクトリに移動します。例:

mkdir C:\Dev\wasdk
cd C:\Dev\wasdk

そのディレクトリに NuGet をダウンロードします。例えば、コマンドラインから PowerShell でダウンロードするには、以下のコマンド実行します。

powershell.exe -Command "& {Invoke-WebRequest https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe}"


Windows App SDK を NuGet でダウンロードします。

nuget.exe install Microsoft.WindowsAppSDK -OutputDirectory ./

WIN_APP_SDK_ROOT 環境変数を Windows APP SDK ディレクトリに設定します。通常は Microsoft.WindowsAppSDK.{Version} と呼ばれるディレクトリです。例えば、コマンドラインを使用する場合、以下の通り実行します。

cd Microsoft.WindowsAppSDK.*
set WIN_APP_SDK_ROOT=%cd%
setX WIN_APP_SDK_ROOT %cd%
注:
set コマンドは変数をローカルに割り当てますが、setX コマンドはグローバルに割り当てます。

使用方法

プロジェクトの CMake ファイルで、qt_add_win_app_sdk(ProjectName) を呼び出します。

ProjectName をプロジェクト名に置き換えてください。

ビルドが MSVC ビルドのみとなるように条件を使用します。

if (MSVC)
    qt_add_win_app_sdk(ProjectName)
endif()

Blog Topics:

Comments