Windows アプリ SDK 1.2 の安定版チャネル リリース ノート
安定チャネルでは、運用環境のアプリによる使用がサポートされている Windows App SDK のリリースが提供されます。 Windows App SDK の安定リリースが使用されるアプリは、Microsoft Store に発行することもできます。
重要なリンク:
- 既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。
最新の安定版チャネル リリース ノート:
Windows App SDK 用のダウンロード
Note
Windows アプリ SDK Visual Studio 拡張機能(VSIX)は、現在は個別のダウンロードとして配布されていません。 それらは、Visual Studio内のVisual Studio Marketplaceで利用可能です。
バージョン 1.2.5 (1.2.230313.1)
これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- コンポジションのシャットダウン時にアプリがクラッシュする問題を修正しました。
- 画面がオフの場合でもアプリでアニメーションの実行が継続される問題を修正しました。
- マウスとキーボード入力が同時に発生すると、WebView2 でマウスとタッチ入力が失敗する問題を修正しました。 詳細については、GitHub の issue #3266 を参照してください。
バージョン 1.2.4 (1.2.230217.4)
これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- 自己完結型アプリが UAC 設定を実行できない問題を修正しました。 詳細については、GitHub の issue #3376 を参照してください。
PushNotificationChannel::ExpirationTime
でプッシュ通知から不正確な有効期限が返される問題を修正しました。 詳細については、GitHub の issue #3300 を参照してください。- x:Bind 関数のパラメーターとして double を渡すと、負の数が "無効" と見なされる問題を修正しました。
- WinUI VSIX を更新するいくつかの修正。 これらの更新には、app.manifest のプロジェクト テンプレート dipAwareness の簡略化、UWP テンプレートの削除、ローカライズされたリソース ファイルの更新、ストア送信のブロックを解除する電話 ID の追加、著作権表示とライセンスの削除が含まれています。 詳細については、GitHub の #5659、#3205、#3323、#3322、#3143 を参照してください。
バージョン 1.2.3 (1.2.230118.102)
これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- 複数のウィンドウを閉じたときに WinUI 3 アプリがクラッシュする問題を修正しました。
- ThreadPoolTimer インターフェイスへの複数の参照が呼び出されている場合に、アプリの終了時にクラッシュが発生する問題を修正しました。 詳細については、GitHub の issue #7260 と #7239 を参照してください。
- すべての単一プロジェクト MSIX アプリが完全信頼として実行される問題を修正しました。 詳細については、GitHub の issue #7766 を参照してください。
バージョン 1.2.2 (1.2.221209.1)
これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
- (インストーラー、NuGet、ブートストラッパーなどの) Microsoft Store パッケージとサイドロード パッケージのいずれかが既にインストールされている場合に、もう一方のインストールに失敗する問題を修正しました。 詳細については、GitHub の issue #3168 を参照してください。
- タッチパッドでスクロールするときに、エラスティック効果やアニメーション カーブが欠落する問題を修正しました。 詳細については、GitHub の issue #7874 を参照してください。
- ListView でメモリ リークが発生する問題を修正しました。
- ボタン テンプレートでマウス ポインターを置いても Foreground プロパティが無視される問題を修正しました。 詳細については、GitHub の issue #7208 を参照してください。
- MediaElement に MediaPlaybackItem が存在しない場合に、不要な例外が発生する問題を修正しました。
- コンテンツの遷移時に MediaPlayerElement に白いフレームが表示される問題を修正しました。
- App.UnhandledException が他のスレッドからの例外をキャッチしない追加の問題を修正しました。 詳細については、GitHub の issue #1259 と #5221 を参照してください。
バージョン 1.2.1 (1.2.221116.1)
これは、1.2 リリースの重大なバグの修正が含まれている Windows App SDK のサービス リリースです。
C++ WinUI 3 アプリに WebView2 または TextBox コントロールを追加すると、起動時にクラッシュする問題を修正しました。 詳細については、GitHub の issue #7911および#3117 を参照してください。
バージョン 1.2 の新機能と更新された機能および既知の問題
以下のセクションでは、1.2 の新機能と更新された機能、既知の問題について説明します。
Note
Visual Studio 2019 と .NET 5 は、C# アプリのビルドでサポートされなくなりました (Windows App SDK 1.2 から C# WinRT 2.0 への移行のページを参照してください)。 Visual Studio 2022 と、.NET SDK バージョン 6.0.401 (またはそれ以降)、6.0.304、6.0.109 のいずれかが必要になります。 リリース時には、WinAppSDK 1.2 は .NET 7 もサポートする予定です。
.NET SDK のバージョンを更新するには、Visual Studio 2022 の最新バージョンをインストールするか、「.NET のダウンロード」を参照してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には .NET 6 以降と WinRT.Runtime.dll バージョン 2.0 以降が必要です。"。 プロジェクトを .NET 5.0 から .NET 6.0 に更新するには、プロジェクト ファイルを開き、"TargetFramework" を net6.0
に、[ターゲットの OS バージョン] を適切な値 (net6.0-windows10.0.19041.0
など) に変更します。
Windows でのサードパーティ製ウィジェット
ウィジェット ボードは Windows 11 で初めて導入され、組み込みのウィジェットの表示に限定されていました。 ウィジェットは、ウィジェット ボードにテキストとグラフィックスを表示する小さな UI コンテナーです。デバイスにインストールされたアプリに関連付けられています。 サード パーティ開発者である場合は、Windows App SDK を使い、パッケージ化された Win32 アプリ用のウィジェットを作成して、Windows 11 のウィジェット ボードでローカルにテストできるようになりました。
ウィジェットの詳細については、「ウィジェットの概要」を参照してください。
初めてアプリ用のウィジェットを開発する場合、前提条件、ガイダンス、ベスト プラクティスについては、ウィジェット サービス プロバイダーの開発ドキュメントと「ウィジェット設計の基礎」を参照してください。
このリリースには次のような前提条件があります。
- 開発マシンでデベロッパー モードが有効になっている。
- 開発マシンは、Windows Insider Preview (WIP) の Dev Channel から 25217 以降のバージョンの Windows を実行しており、ウィジェット ボードのバージョンが 521.20060.1205.0 以降である。
ウィジェット開発時の既知の制限事項:
- サードパーティ製ウィジェットは、今回のプレビュー リリースの WIP に登録されたデバイスのローカルでのみテストできます。
- パッケージ化された Win32 アプリ用にのみウィジェットを作成できます。 Progressive Web Apps (PWA) 用のウィジェットは、Microsoft Edge 108 の一部としてサポートされる予定です。
DisplayInformation
Windows デスクトップ アプリは、WinAppSDK の DisplayInformation クラスを介して、ハイ ダイナミック レンジ (HDR) と Auto Color Management (ACM) をサポートできます。 DisplayInformation クラスを使うと、アプリケーション ビューのディスプレイ関連情報を監視できます。 これには、ビューが表示されているディスプレイに影響するアプリケーション ビューの変更と、アプリケーション ビューに影響する可能性があるディスプレイの変更を、クライアントから監視できるようになるイベントが含まれています。
WinUI 3
WinUI 3 アプリで、MediaPlayerElement と MediaTransportControls メディア再生コントロールを使ってオーディオとビデオを再生できます。 メディア コントロールの使い方とタイミングについては、「メディア プレイ ヤー」を参照してください。
WinUI 3 は WinUI 2.8 から更新され、最新のコントロール、スタイル、動作になりました。 これらの更新には、InfoBadge コントロールの追加、アクセシビリティとハイ コントラスト モードの機能強化、コントロール全体のバグ修正が含まれています。 詳細については、WinUI 2.7 と WinUI 2.8 のリリース ノートを参照してください。
修正された問題:
- DesktopAcrylicController を使ったアクリル背景素材が Windows 10 アプリでサポートされるようになりました。 詳細については、GitHub の issue 7112 を参照してください。
- App.UnhandledException のルーティングに失敗するさまざまな問題を修正しました。 詳細については、GitHub の issue 5221 を参照してください。 その他の問題については、次の GitHub の issue に回避策が記載されており、今後の 1.2 リリースで解決される予定です。
- WinAppSDK 1.1 から ListView のスタイルが回帰して変更される問題を修正しました。 詳細については、GitHub の issue 7666 を参照してください。
- アプリが非アクティブのときに、不正な Mica フォールバック背景色が表示される問題を修正しました。 詳細については、GitHub の issue 7801 を参照してください。
既知の制限事項:
- Visual Studio 2022 17.4.0 を使って新しい WinUI 3 プロジェクトを作成すると、WinAppSDK のプレビュー バージョンが参照されます。 NuGet パッケージ マネージャーを使って、参照をこのリリースに更新してください。
- パッケージ化されていないアプリで MediaPlayerElement.Source を相対 URI (ms-appx/ms-resource) に設定できません。 お勧めする回避策は、相対的な ms-appx:/// URI を完全に解決された file:/// URI に変換することです。
.NET を使って開発されたアプリのトリミング
.NET 開発者は、WinAppSDK アプリをトリミングして発行できるようになりました。 CsWinRT 2.0 では、WinAppSDK で配布される C#/WinRT のプロジェクションをトリミングできるようになりました。 アプリをトリミングして発行すると、トリミング可能なバイナリから使われていないコードが削除されるので、アプリのディスク占有領域を減らすことができます。 また、アプリの起動パフォーマンスも向上する可能性があります。 基本的な Hello World アプリの場合、トリミングして発行すると、ディスク占有領域は約 80%、起動パフォーマンスは約 7% 向上することを確認しました。 WinUI ギャラリーの場合、ディスク占有領域は約 45% 向上することを確認しました。
トリミングを有効にする方法、トリミングの制限 (トリミング可能な型に対するリフレクションなど)、トリミングの警告の詳細については、「自己完結型の展開と実行可能ファイルのトリミング」を参照してください。 開発者は、トリミング後のアプリを徹底的にテストして、すべてが想定どおりに機能することを確認してください。 詳細については、GitHub の issue 2478 を参照してください。
Visual Studio Arm64 のサポート
Project Reunion (現在の WinAppSDK) 0.5 の時点では、WinAppSDK を使って開発したアプリは Arm64 上で実行できました。 Visual Studio 17.3 Preview 2 以降、Arm64 デバイス上で WinAppSDK を使ったネイティブ アプリケーションを開発できるようになりました。
Arm64 デバイス上で初めて開発する場合は、「Arm 版 Windows」と「Arm64 Visual Studio」を参照してください。
通知
AppNotificationBuilder は、アプリ通知を作成および定義する際に XML ペイロードの代わりとして導入されました。
使い方については、GitHub の AppNotificationBuilder 仕様を参照してください。
また、ローカル アプリ通知を送受信するデスクトップ Windows アプリケーションの作成方法の例については、「クイックスタート: Windows アプリ SDK のアプリ通知」を参照してください。
破壊的変更:
プッシュ通知の場合、チャネル要求呼び出しを行うときに、アプリは Azure アプリ ID ではなく Azure オブジェクト ID を使う必要があります。 Azure オブジェクト ID の見つけ方の詳細については、「クイックスタート: Windows App SDK のプッシュ通知」を参照してください。
修正された問題:
PushNotificationManager.IsSupported は管理者特権モードのチェックを実行します。 管理者特権でアプリが実行されている場合は、false
を返します。
既知の制限事項 (通知):
- AppNotificationScenario では、
Urgent
は Windows ビルド 19041 以降でのみサポートされています。 AppNotificationBuilder.IsUrgentScenarioSupported を使うと、実行時にその機能を使用できるかどうかを確認できます。 - AppNotificationButton では、
hint-toolTip
とhint-buttonStyle
はビルド 19041 以降でのみサポートされています。 IsButtonStyleSupported と IsToolTipSupported を使うと、実行時にその機能を使用できるかどうか確認できます。 - パッケージ化されていないアプリの XAML マークアップで MediaPlayerElement を使う場合、Source プロパティには ms-appx または ms-resource URI を設定できません。 代わりに、ファイル URI を使って Source を設定するか、コードから設定してください。
ウィンドウ化
Windows 10 のバージョン 1809 以降では、AppWindowTitleBar クラスを使ってタイトル バーの完全なカスタマイズが可能になりました。 AppWindowTitleBar.ExtendsContentIntoTitleBar を true
に設定するとタイトル バー リージョンにコンテンツを拡張できます。また、SetDragRectangles を使うと、(他のカスタマイズ オプションに加えて) ドラッグ領域を定義できます。
AppWindowTitleBar.IsCustomizationSupported プロパティを使って AppWindowTitleBar API を呼び出すことができるかどうかを確認している場合、サポートされている Windows App SDK Windows 10 バージョン (1809 以降) では true
が返されるようになりました。
既知の制限事項 (ウィンドウ設定):
Windows 10 では、基本のタイトル バーのカスタマイズはサポートされていません。 たとえば、BackgroundColor、InactiveBackgroundColor、ForegroundColor、InactiveForegroundColor、IconShowOptions などです。 これらのプロパティを呼び出すと、メッセージなしで無視されます。 他のすべての AppWindowTitleBar API は、Windows 10 バージョン 1809 以降で機能します。 (特に) キャプション ボタンの色 API と、Height については、ExtendsContentIntoTitleBar を true
に設定する必要があります。そうしないと、メッセージなしで無視されます。
アクセス制御
security.accesscontrol.h に GetSecurityDescriptorForAppContainerNames 関数を導入し、パッケージ プロセスと一般的な Win32 API 間の名前付きオブジェクト共有を容易にし、合理化しました。 このメソッドは、パッケージ ファミリ名 (PFN) とアクセス マスクの一覧を受け取り、セキュリティ記述子を返します。 詳細については、GitHub の GetSecurityDescriptorForAppContainerNames 仕様を参照してください。
その他の制限事項と既知の問題
重要
プロジェクトから WinAppSDK 1.2 を参照すると、次のようなエラーが表示されることがあります: "パッケージのダウングレードが検出されました: Microsoft.Windows.SDK.BuildTools 10.0.22621.1 から 10.0.22000.194"。これは、アプリ プロジェクトと WinAppSDK パッケージからのパッケージへの参照に互換性がないために発生します。 これを解決するには、プロジェクト内の参照を新しく互換性のあるバージョンの Microsoft.Windows.SDK.BuildTools に更新します。
- Visual Studio のテスト出力ペインで、単体テストが
REGDB_E_CLASSNOTREG
エラーで失敗することがあります。 回避策として、プロジェクト ファイルに<WindowsAppContainer>true</WindowsAppContainer>
を追加できます。 - .NET PublishSingleFile はサポートされていません。
- ブートストラップとドッキングされていない RegFree WinRT 自動初期化子の既定値は、(現在は) 実行可能ファイル (OutputType=Exe または WinExe) を生成するプロジェクトにのみ設定されています。 そのため、クラス ライブラリ DLL やその他の非実行可能ファイルに自動初期化子を既定で追加できなくなりました。
- 非実行可能ファイル (たとえば、ブートストラッパーを初期化しない汎用実行可能ファイルによって読み込まれるテスト DLL) に自動初期化子が必要な場合、
<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>
または<WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
を使って、プロジェクトで自動初期化子を明示的に有効にすることができます。
- 非実行可能ファイル (たとえば、ブートストラッパーを初期化しない汎用実行可能ファイルによって読み込まれるテスト DLL) に自動初期化子が必要な場合、
- Microsoft.WindowsAppRuntime.Release.Net.dll は常に Arm64 バイナリであり、x86 と x64 アプリでは機能しません。 Bootstrap API を明示的に呼び出す場合は、Microsoft.WindowsAppRuntime.Release.Net.dll アセンブリを使わないでください。 回避策として、NuGet パッケージ '..\include\WindowsAppSDK-VersionInfo.cs' で配布するこのソース ファイルにバージョン定数を含めるか、自動初期化子を使用できます。
関連トピック
Windows developer