Windows App SDK のプレビュー チャネルのリリース ノート
重要
プレビュー チャネルは、運用環境での使用ではサポートされていません。また、プレビュー リリースを使用するアプリを Microsoft Store に公開することはできません。
プレビュー チャネルは、次回の安定リリースのプレビューを提供します。 指定されたプレビュー チャネル リリースと次期安定リリースとの間に API の破壊的変更がある場合があります。 プレビュー チャネル リリースには試験版 API は含まれていません。
重要なリンク:
- 既存のアプリを以前のバージョンの Windows App SDK から新しいバージョンにアップグレードする場合は、「既存のプロジェクトを最新リリースの Windows App SDK に更新する」を参照してください。
- プレビュー リリースのドキュメントについては、「Windows アプリ SDK のプレビュー チャネルと実験チャネル用のツールのインストール」を参照してください。
バージョン 1.5 プレビュー 1 (1.5.0-preview1)
これは、バージョン 1.5 のプレビュー チャネルの最新リリースです。
既存の Windows App SDK 1.4 (安定チャンネルから) アプリケーションでは、Nuget パッケージを 1.5.0-preview1 に更新できます (「NuGet Package Manager を使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージを更新する」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
XAML Islands ランタイムおよびシャットダウンの更新
- 任意のスレッドの最後の Xaml ウィンドウが閉じられた際の、Xaml Islands ベースのアプリにおける WinAppSDK 1.4 と WinAppSDK 1.5 の反応には違いがあります。
- WinAppSDK 1.4 では、スレッドの最後の Xaml ウィンドウが閉じられると、Xaml ランタイムは常にスレッドのイベント ループを終了します。
- WinAppSDK 1.5 の場合:
- アプリが WinUI Desktop アプリの場合、既定の反応は WinAppSDK 1.4 と同じです。
- DesktopWindowXamlSource (「Xaml Islands」) API に Xaml を使用している場合、現在では既定の反応で Xaml がスレッドのイベント ループを自動的に終了することはありません。
- 双方のモードで、
Application.DispatcherShutdownMode
プロパティを設定して、この反応を変更できます。
- 詳細については、使用可能であれば
Application.DispatcherShutdownMode
プロパティ用ドキュメンテーションを参照してください。
- Xaml ランタイムの存続期間中、Xaml Islands ベースのアプリにおいて WinAppSDK 1.4 と WinAppSDK 1.5 には反応に違いがあります。
- WinAppSDK 1.4 では、Xaml ランタイムは、特定のスレッド上のすべての
WindowsXamlManager
およびDesktopWindowXamlSource
オブジェクトが閉じられたりシャットダウンされたり、またはそのスレッドで実行されているDispatcherQueue
がシャットダウンされたりした場合に、スレッドでシャットダウンされます (Xaml ランタイムはDispatcherQueue.FrameworkShutdownStarting
ステージ中にシャットダウンされます)。 - WinAppSDK 1.5 では、そのスレッドで実行されている DispatcherQueue がシャットダウンされた場合にのみ、Xaml ランタイムがスレッドでシャットダウンします (Xaml ランタイムは
DispatcherQueue.FrameworkShutdownStarting
ステージ中にシャットダウンします)。 - 詳細については、使用可能であれば
WindowsXamlManager
クラス用ドキュメンテーションを参照してください。
- WinAppSDK 1.4 では、Xaml ランタイムは、特定のスレッド上のすべての
WinUI Maps コントロール
WinUI Maps
コントロールの最初のリリースが利用可能になりました。 このコントロールは、WebView2 と Azure Maps を利用し、次の機能を提供します。
- マップ ボタンまたはタッチによるパンとズーム。
- マップのスタイルを、サテライト、地形、またはストリート ビューに変更。
- 開発者がカスタマイズ可能なアイコンを含む対話可能なピンをプログラムでマップに追加。
- 初期読み込みがマップに基づく箇所における開発者によるカスタマイズ。
- パン、ズーム、マップ スタイルのボタンの非表示または表示に対する開発者によるコントロール。
Note
Maps
コントロールを使用するには、Azure Maps キーが必要です。 キーを作成するには、Web アプリ作成用 Azure Maps ドキュメンテーション ページを参照してください。
Maps
コントロールは全く新しい機能であり、今後の方向性の評価のため皆様のフィードバックをお待ちしております。
WinAppSDK における他の新機能
- PublishSingleFile デプロイ モデルのサポートが追加されました。 PublishSingleFile について詳しくは、 単一ファイルのデプロイに関するドキュメンテーションをご覧ください。
バグ修正
- プロジェクション DLL が生成されない 1.5-experimental2 リリースの問題を修正しました。 詳細については、GitHub の問題 #4152 を参照してください。
RichEditBox
のテキスト書式設定ポップアップ上の 3 点リーダーボタンがアクションの一覧を正しく表示しない問題を修正しました。 詳細については、GitHub の問題 #9140 を参照してください。ListView
がキーボード アクセラレーターを正しく扱わない問題を修正しました。 詳細については、GitHub の問題 #8063 を参照してください。AccessKey
を使ってウィンドウを閉じる際のアクセス違反問題を修正しました。 詳細については、GitHub の問題 #8648 を参照してください。MenuBar
にあるMenuFlyoutItem
のテキスト配置に影響する問題を修正しました。 詳細については、GitHub の問題 #8755 を参照してください。- 強調表示されたテキストが右クリック時に強調表示されたままとならない問題を修正しました。 詳細については、GitHub の問題 #1801 を参照してください。
- 非アクティブなウィンドウを閉じるとアプリがクラッシュする問題を修正しました。 詳細については、GitHub の問題 #8913 を参照してください。
- マウスの中央ボタンでスクロールし、直後に左クリックすると、アプリケーションがハングされることがある問題を修正しました。 詳細については、GitHub の問題 #9233 を参照してください。
1.5.0-preview1 の新しい API
バージョン1.5-preview1 には、安定版 1.4 リリースと比較して、次の新しい API が含まれています。
Microsoft.Graphics.DirectX
DirectXPixelFormat
A4B4G4R4
Microsoft.UI.Input
FocusNavigationReason
FocusNavigationRequest
FocusNavigationRequestEventArgs
FocusNavigationResult
InputFocusController
DepartFocus
NavigateFocusRequested
InputFocusNavigationHost
Microsoft.UI.Xaml
Application
DispatcherShutdownMode
DebugSettings
LayoutCycleDebugBreakLevel
LayoutCycleTracingLevel
DispatcherShutdownMode
LayoutCycleDebugBreakLevel
LayoutCycleTracingLevel
Microsoft.UI.Xaml.Controls
MapControl
MapControlMapServiceErrorOccurredEventArgs
MapElement
MapElementClickEventArgs
MapElementsLayer
MapIcon
MapLayer
SelectorBar
SelectorBarItem
SelectorBarSelectionChangedEventArgs
WebView2
EnsureCoreWebView2Async
EnsureCoreWebView2Async
Microsoft.UI.Xaml.Hosting
WindowsXamlManager
GetForCurrentThread
XamlShutdownCompletedOnThread
XamlShutdownCompletedOnThreadEventArgs
Microsoft.Web.WebView2.Core
CoreWebView2
FrameId
CoreWebView2AcceleratorKeyPressedEventArgs
IsBrowserAcceleratorKeyEnabled
CoreWebView2BrowserExtension
CoreWebView2BrowsingDataKinds
ServiceWorkers
CoreWebView2CustomSchemeRegistration
CoreWebView2CustomSchemeRegistration (String)
AllowedOrigins
SchemeName
CoreWebView2Environment
GetProcessExtendedInfosAsync
CoreWebView2EnvironmentOptions
AreBrowserExtensionsEnabled
CustomSchemeRegistrations
CoreWebView2Frame
FrameId
CoreWebView2FrameInfo
FrameId
FrameKind
ParentFrameInfo
CoreWebView2FrameKind
CoreWebView2MouseEventKind
NonClientRightButtonDown
NonClientRightButtonUp
CoreWebView2NavigationKind
CoreWebView2NavigationStartingEventArgs
NavigationKind
CoreWebView2NewWindowRequestedEventArgs
OriginalSourceFrameInfo
CoreWebView2ProcessExtendedInfo
CoreWebView2Profile
AddBrowserExtensionAsync
Delete
Deleted
Microsoft.Windows.Management.Deployment
AddPackageOptions
EnsureReadyOptions
PackageDeploymentContract
PackageDeploymentManager
PackageDeploymentProgress
PackageDeploymentProgressStatus
PackageDeploymentResult
PackageDeploymentStatus
PackageRuntimeManager
PackageSet
PackageSetItem
PackageSetItemRuntimeDisposition
PackageSetRuntimeDisposition
PackageVolume
ProvisionPackageOptions
RegisterPackageOptions
RemovePackageOptions
StagePackageOptions
StubPackageOption
Microsoft.Windows.Widgets.Feeds.Providers
CustomQueryParametersRequestedArgs
CustomQueryParametersUpdateOptions
FeedDisabledArgs
FeedEnabledArgs
FeedManager
FeedProviderDisabledArgs
FeedProviderEnabledArgs
FeedProviderInfo
IFeedManager
IFeedProvider
バージョン 1.4 プレビュー 2 (1.4.0-preview2)
これは、バージョン 1.4 のプレビュー チャネルの最新リリースです。
既存の Windows App SDK 1.3 (安定チャネルから) アプリでは、Nuget パッケージを 1.4.0-preview2 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
XAML Islands が試験段階ではなくなった
XAML Islands と基になる ContentIslands プラットフォームが試験段階ではなくなりました。
- 現在、XAML Islands は C++ アプリでの使用のためにのみテストされます。 このリリースには、WPF または WinForms で使用するための便利なラッパー要素は含まれていません。
DesktopWindowXamlSource
とそれに関連する型が XAML Islands の Microsoft.UI.Xaml.Hosting 名前空間に追加されました。 要素の基になる Island 情報にアクセスしやすくするためにXamlRoot.ContentIslandEnvironment
が追加されました。- XAML Islands の基になるサポートとして、またはこの ContentIslands 機能を XAML なしで使用するために、Microsoft.UI.Content 名前空間と Microsoft.UI.Input 名前空間に多くの新しい型が導入されました。
- Island のシナリオのために、Microsoft.UI.Input.DragDrop 名前空間に新しい
DragDropManager
(および関連する型) が追加されました。
アイテムビュー の更新
バージョン 1.4-preview1 で導入された新しい ItemsView
クラスは、新しいプロパティと新しいサポート クラスで大幅に更新されました。
- 新しい
ItemsView
コントロールは、データ コレクションを表示します。ItemsView
はListView
およびGridView
コントロールに似ていますが、ItemsRepeater
、ScrollView
、ItemContainer
、ItemCollectionTransitionProvider
の各コンポーネントを使用して構築されます。 これは、カスタムLayout
またはItemCollectionTransitionProvider
実装をプラグインするための固有の機能を提供します。 もう 1 つの主な利点として、項目の選択を保持しながら、その場でレイアウトを切り替える機能があります。 内側のScrollView
コントロールもまた、プログラムによるスクロール中にアニメーションを制御する機能などの、ListView
/GridView
のScrollViewer
コントロールでは使用できない機能を提供します。ItemsRepeater
上の新しいItemTransitionProvider
プロパティ (および新しいItemsView
コントロール) を使用すると、そのコントロール上の切り替えアニメーションを制御するItemCollectionTransitionProvider
オブジェクトを指定できます。CreateDefaultItemTransitionProvider
メソッドもLayout
に追加されました。これにより、レイアウト オブジェクトは、ユーザーがItemsView
コントロールで明示的に提供しない場合、それに付随するフォールバック切り替えを提供できるようになります。- 項目のレイアウト方向 (存在する場合) がソース コレクション内のそのインデックスに基づいている場合の
Layout
上の新しいIndexBasedLayoutOrientation
プロパティ。 既定値はIndexBasedLayoutOrientation.None
です。 カスタム レイアウトは、新しい (保護された)SetIndexBasedLayoutOrientation
メソッドを呼び出してこのプロパティを設定します。 VirtualizingLayoutContext
上の新しいVisibleRect
プロパティは、Layout
に関連付けられたFrameworkElement
内の表示されているビューポートの四角形を取得します。 保護された仮想VirtualizingLayoutContext.VisibleRectCore
メソッドは、VisibleRect
プロパティから返される値を指定するようにオーバーライドできます。
- 新しい
LinedFlowLayout
クラスは通常、ItemsView
コレクション コントロールの項目をレイアウトするために使用されます。 これは、画像のコレクションを表示するために特に役立ちます。 これは、等しい高さのラインで左から右に、次に上から下にレイアウトすることによって行われます。 これらの画像によって水平線が塗りつぶされた後、次のラインに折り返されます。 画像は、ラインに収まるように、左端と右端でトリミングされる可能性があります。 また、拡大モードが使用されているとき、ラインを塗りつぶすために水平方向に拡張され、上端と下端でトリミングされる可能性もあります。
WinAppSDK 全体からの新機能と更新
Popup/FlyoutBase.IsConstrainedToRootBounds = false
がサポートされるようになったため、ポップアップは親ウィンドウの境界外に拡張できます。 これらの制約なしのポップアップでのアクリルの使用をサポートするために、SystemBackdrop
プロパティがこれらの型に追加されました。 メニューは、既定ではこれを使用してアクリルを使用します。- オブジェクトまたはスレッドのシャットダウン中の処理を改善するために、
Closed
、FrameworkClosed
、IsClosed
がDesktopAcrylicController
とMicaController
に追加されました。 DesktopAcrylicController.Kind
が、いくつかの標準的なアクリルの外観から選択するように設定できるようになりました。DispatcherQueue
には、より適切に整理されたシャットダウンを容易にするため、また Islands を使用するアプリが標準のサポートされているイベント ループを簡単に実行するための新しいイベントとヘルパーがいくつか含まれています。- Microsoft.UI.Input 名前空間内の
InputNonClientPointerSource
は、カスタム タイトル バーのシナリオでクライアント以外の領域を定義するために使用できます。 これらの領域でのホバー イベントやクリック イベントなどの対応するイベント用のコードを登録できます。 AppWindow
には、DispatcherQueue
を取得して関連付けるための新しいヘルパーがいくつか含まれています。- 新しい
TreeView.SelectionChanged
イベントを使用すると、開発者は、ユーザーまたは分離コードがTreeView
コントロール内の選択された一連のノードを変更したときに応答できます。 - 新しい
ScrollView
コントロールは、ScrollViewer
に代わる新しい代替手段を提供します。 この新しいコントロールは、動作や API が既存のScrollViewer
コントロールと高度に整合されていますが、InteractionTracker
に基づいているため、アニメーション駆動型のビュー変更などの新機能を備え、またItemsRepeater
のすべての機能を保証するようにも設計されています。 詳細については、より柔軟な ScrollViewer · イシュー #108 · microsoft/microsoft-ui-xaml (github.com) を参照してください。 さまざまな新しい型 (ScrollPresenter
を含む) がScrollView
モデル全体に含まれています。 - 新しい
AnnotatedScrollBar
コントロールは、多数の項目間を簡単に移動する方法を提供することによって、通常のスクロール バーの機能を拡張します。 これは、マーカーとして機能するラベルが付いたクリック可能なレールを使用して実現されます。 また、クリック可能なレールの上にマウス ポインターを置くとツールヒントが表示されるため、スクロール可能なコンテンツのよりきめ細かな理解も可能になります。
1.4.0-preview2 の新しい API
バージョン 1.4-preview2 には、以前の 1.4-preview1 リリースと比較して、次の新しい API が含まれています。
Microsoft.UI
ClosableNotifierHandler
IClosableNotifier
Microsoft.UI.Composition.SystemBackdrops
DesktopAcrylicController
Closed
FrameworkClosed
IsClosed
Kind
DesktopAcrylicKind
MicaController
Closed
FrameworkClosed
IsClosed
Microsoft.UI.Content
ContentCoordinateConverter
ContentCoordinateRoundingMode
ContentDeferral
ContentEnvironmentSettingChangedEventArgs
ContentEnvironmentStateChangedEventArgs
ContentIsland
ContentIslandAutomationProviderRequestedEventArgs
ContentIslandEnvironment
ContentIslandStateChangedEventArgs
ContentLayoutDirection
ContentSite
ContentSiteEnvironment
ContentSiteEnvironmentView
ContentSiteRequestedStateChangedEventArgs
ContentSiteView
ContentSizePolicy
DesktopChildSiteBridge
DesktopSiteBridge
IContentSiteBridge
Microsoft.UI.Dispatching
DispatcherExitDeferral
DispatcherQueue
EnqueueEventLoopExit
EnsureSystemDispatcherQueue
FrameworkShutdownCompleted
FrameworkShutdownStarting
RunEventLoop
RunEventLoop
DispatcherQueueController
ShutdownQueue
DispatcherRunOptions
Microsoft.UI.Input
CharacterReceivedEventArgs
ContextMenuKeyEventArgs
FocusChangedEventArgs
InputActivationListener
GetForIsland
InputFocusChangedEventArgs
InputFocusController
InputKeyboardSource
CharacterReceived
ContextMenuKey
GetCurrentKeyState
GetForIsland
GetKeyState
KeyDown
KeyUp
SystemKeyDown
SystemKeyUp
InputNonClientPointerSource
InputPointerSource
GetForIsland
InputPreTranslateKeyboardSource
KeyEventArgs
NonClientCaptionTappedEventArgs
NonClientPointerEventArgs
NonClientRegionKind
NonClientRegionsChangedEventArgs
PhysicalKeyStatus
VirtualKeyStates
Microsoft.UI.Input.DragDrop
DragDropManager
DragDropModifiers
DragInfo
DragOperation
DragUIContentMode
DragUIOverride
DropOperationTargetRequestedEventArgs
IDropOperationTarget
Microsoft.UI.Windowing
AppWindow
AssociateWithDispatcherQueue
Create
DispatcherQueue
Microsoft.UI.Xaml
XamlRoot
ContentIslandEnvironment
Microsoft.UI.Xaml.Automation.Peers
ItemsViewAutomationPeer
Microsoft.UI.Xaml.Controls
AnnotatedScrollBar
AnnotatedScrollBarDetailLabelRequestedEventArgs
AnnotatedScrollBarLabel
AnnotatedScrollBarScrollingEventArgs
AnnotatedScrollBarScrollingEventKind
IndexBasedLayoutOrientation
ItemCollectionTransition
ItemCollectionTransitionCompletedEventArgs
ItemCollectionTransitionOperation
ItemCollectionTransitionProgress
ItemCollectionTransitionProvider
ItemCollectionTransitionTriggers
ItemsRepeater
ItemTransitionProvider
ItemTransitionProviderProperty
ItemsView
ItemsViewItemInvokedEventArgs
ItemsViewSelectionChangedEventArgs
ItemsViewSelectionMode
Layout
CreateDefaultItemTransitionProvider
IndexBasedLayoutOrientation
SetIndexBasedLayoutOrientation
LinedFlowLayout
LinedFlowLayoutItemCollectionTransitionProvider
LinedFlowLayoutItemsInfoRequestedEventArgs
LinedFlowLayoutItemsJustification
LinedFlowLayoutItemsStretch
ScrollingAnchorRequestedEventArgs
ScrollingAnimationMode
ScrollingBringingIntoViewEventArgs
ScrollingChainMode
ScrollingContentOrientation
ScrollingInputKinds
ScrollingInteractionState
ScrollingRailMode
ScrollingScrollAnimationStartingEventArgs
ScrollingScrollBarVisibility
ScrollingScrollCompletedEventArgs
ScrollingScrollMode
ScrollingScrollOptions
ScrollingSnapPointsMode
ScrollingZoomAnimationStartingEventArgs
ScrollingZoomCompletedEventArgs
ScrollingZoomMode
ScrollingZoomOptions
ScrollView
TreeView
SelectionChanged
TreeViewSelectionChangedEventArgs
VirtualizingLayoutContext
VisibleRect
VisibleRectCore
Microsoft.UI.Xaml.Controls.Primitives
FlyoutBase
SystemBackdrop
SystemBackdropProperty
IScrollController
IScrollControllerPanningInfo
Popup
SystemBackdrop
SystemBackdropProperty
RepeatedScrollSnapPoint
RepeatedZoomSnapPoint
ScrollControllerAddScrollVelocityRequestedEventArgs
ScrollControllerPanRequestedEventArgs
ScrollControllerScrollByRequestedEventArgs
ScrollControllerScrollToRequestedEventArgs
ScrollPresenter
ScrollSnapPoint
ScrollSnapPointBase
ScrollSnapPointsAlignment
SnapPointBase
ZoomSnapPoint
ZoomSnapPointBase
Microsoft.UI.Xaml.Hosting
DesktopWindowXamlSource
DesktopWindowXamlSourceGotFocusEventArgs
DesktopWindowXamlSourceTakeFocusRequestedEventArgs
WindowsXamlManager
XamlSourceFocusNavigationReason
XamlSourceFocusNavigationRequest
XamlSourceFocusNavigationResult
バージョン 1.4 プレビュー 1 (1.4.0-preview1)
これは、バージョン 1.4 のプレビュー チャネルの最新リリースです。
既存の Windows App SDK 1.3 (安定チャネルから) アプリでは、Nuget パッケージを 1.4.0-preview1 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
ウィジェットの更新
ウィジェット プロバイダーで実装する 3 つの新しいインターフェイス IWidgetProvider2
、IWidgetProviderAnalytics
、IWidgetProviderErrors
が追加されました。 IWidgetProvider2
を使用すると、プロバイダーは、ユーザーによって呼び出された [カスタマイズ] アクションに応答できます。これは、ファースト パーティ ウィジェットで使用可能なものと同じです。 IWidgetProviderAnalytics
および IWidgetProviderErrors
インターフェイスは、各ウィジェットのテレメトリを収集するためにプロバイダーによって使用されます。ウィジェットに関する分析およびエラー イベントは、対応するウィジェット プロバイダーに伝達されます。 新しい機能をサポートするための関連情報を伝達するために、WidgetCustomizationRequestedArgs
、WidgetAnalyticsInfoReportedArgs
、WidgetErrorInfoReportedArgs
の各クラスが使用されます。
WinAppSDK 全体にまたがる新機能
- UWP の AccessibilitySettings クラスと同様に、Win32 WinRT アプリでシステムのハイ コントラスト設定がいつ変更されたかを検出できるようにする新しい
ThemeSettings
クラス。 詳細については、GitHub 上の ThemeSettings API の仕様を参照してください。 - ツールチップ、メニュー、その他のポップアップをメインウィンドウの境界外に拡張できるように、
Popup/FlyoutBase.ShouldConstrainToRootBounds
がサポートされるようになりました。 Preview 1 では、ポップアップ/ポップアップでのアクリルまたはその他の SystemBackdrops の使用はまだ完全にはサポートされていません。このための追加の API と実装は、次の 1.4 リリースに含まれる予定です。 AccessKeyManager.EnterDisplayMode
は、指定されたルートの現在のフォーカスされた要素のアクセス キーを表示するための新しいメソッドです。 アクセス キーは、コマンドを呼び出すためにキーのヒントを表示しているとき (ペイントで Alt キーを押して、どのキーがどのコントロールに対応しているかを表示する場合など) に "表示モード" になります。 このメソッドを使用すると、プログラムで表示モードに入ることができます。Application.ResourceManagerRequested
は、既定のResourceManager
が機能しないシナリオで、リソース URI を解決するための別のIResourceManager
を指定するメカニズムを提供します。 詳細については、GitHub 上の Application.ResourceManagerRequested API の仕様を参照してください。ItemsView
という名前の新しいリスト コントロールと、対応する具象クラスItemContainer
を導入しています。ItemContainer
は、選択状態とビジュアルが組み込まれた軽量のコンテナーです。これは、目的のコンテンツを容易にラップでき、コレクション コントロールのシナリオにItemsView
と共に使用できます。ItemsView
は Preview 1 ではまだ実験的とマークされていますが、次の 1.4 リリースに含まれる予定です。- WebView2 SDK のバージョンが 1661.34 から 1823.32 に更新されました。
1.4.0-preview1 の新しい API
バージョン 1.4-preview1 には、安定版 1.3 リリースと比較して、次の新しい API が含まれています。
Microsoft.UI.System
ThemeSettings
Microsoft.UI.Xaml
Application
ResourceManagerRequested
ResourceManagerRequestedEventArgs
Microsoft.UI.Xaml.Automation.Peers
ItemContainerAutomationPeer
Microsoft.UI.Xaml.Controls
ItemContainer
Microsoft.UI.Xaml.Controls.Primitives
CommandBarFlyoutCommandBar
SystemBackdrop
SystemBackdropProperty
Microsoft.UI.Xaml.Input
AccessKeyManager
EnterDisplayMode
Microsoft.Web.WebView2.Core
CoreWebView2
LaunchingExternalUriScheme
MemoryUsageTargetLevel
CoreWebView2File
CoreWebView2LaunchingExternalUriSchemeEventArgs
CoreWebView2MemoryUsageTargetLevel
CoreWebView2PermissionKind
WindowManagement
CoreWebView2Profile
CookieManager
IsGeneralAutofillEnabled
IsPasswordAutosaveEnabled
CoreWebView2Settings
IsReputationCheckingRequired
CoreWebView2WebMessageReceivedEventArgs
AdditionalObjects
Microsoft.Windows.Widgets.Providers
IWidgetProvider2
IWidgetProviderAnalytics
IWidgetProviderErrors
WidgetAnalyticsInfoReportedArgs
WidgetCustomizationRequestedArgs
WidgetErrorInfoReportedArgs
バージョン 1.3 プレビュー 1 (1.3.0-preview1)
これは、バージョン 1.3 のプレビュー チャネルの最新リリースです。 このリリースには、WinAppSDK 全体の新機能のプレビューと、パフォーマンス、セキュリティ、アクセシビリティ、信頼性に関するいくつかのバグ修正が含まれています。
既存の Windows App SDK 1.2 (安定チャネルから) アプリでは、Nuget パッケージを 1.3.0-preview1 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
XAML Backdrop API
XAML ウィンドウに組み込まれたプロパティにより、マイカと背景アクリルの背景が WinUI 3 アプリで使いやすくなりました。 Window.SystemBackdrop プロパティの詳しい情報は、GitHub の Xaml 背景 API 仕様 を参照してください。
public MainWindow()
{
this.InitializeComponent();
this.SystemBackdrop = new MicaBackdrop();
}
Window.AppWindow
数行の定型コードを置き換えて、Window.AppWindow
を介して [ウィンドウ] から直接 AppWindow API を使用できるようになりました。 その他の背景と使用に関する情報については、「GitHub の Window.AppWindow API 仕様」を参照してださい。
WinAppSDK 全体の新機能
ApplicationModel.DynamicDependency
: 非推奨の MddGetGenerationId を置き換えるPackageDependency.PackageGraphRevisionId
。- Environment Manager: Environment Manager の変更をアプリケーションで追跡できるかどうかを通知する
EnvironmentManager.AreChangesTracked
。 詳細については、GitHub の「環境マネージャー API 仕様」を参照してください。 - MRT Core: 新しいイベント、
Application.ResourceManagerInitializing
はアプリが独自のIResourceManager
インターフェイスの実装を提供し、WinUI がリソース URI の解決に使用する ResourceManager にアクセスできるようにします。 詳細については、GitHub の IResourceManager API 仕様を参照してください。 - 最新の実験的な VSIX を使うと、プロジェクト ファイルではなく、Visual Studio のメニューから、パッケージ化されていないアプリとパッケージ アプリの間で変換できるようになりました。
- 参照された Static/ThemeResource の LOOKUP を解決できないときに、新しいイベント、
DebugSettings.XamlResourceReferenceFailed
が発生するようになりました。 このイベントは、Static & ThemeResource ルックアップの失敗をより適切にデバッグできるようにするために、フレームワークがそのキーを検索した場所の詳細を示すトレースへのアクセスを提供します。 詳細については、GitHub の API 仕様と問題 4972、2350、6073 を参照してください。 - デプロイ: Windows アプリ ランタイム を管理および修復するために、
DeploymentRepairOptions
がDeploymentManager
の一部として使用できるようになりました。 詳細については、GitHub の展開 API 仕様の「修復」セクションを参照してください。
既知の問題
- Pivot コントロールは、XAML 解析エラーでランタイム クラッシュを引き起こします。 詳細については、GitHub の issue #8160 を参照してください。
- DatePicker または TimePicker ポップアップを開くと、アプリがクラッシュします。
- 1.3 リリースで導入された
WindowsAppRuntime.ReleaseInfo
API とWindowsAppRuntime.RuntimeInfo
API は、重大なバグが含まれているため、まだサポートされていません。
バージョン 1.2 プレビュー 2 (1.2.0-preview2)
これは、バージョン 1.2 のプレビュー チャネルの最新リリースです。
既存の Windows App SDK 1.1 (安定チャネルから) アプリでは、Nuget パッケージを 1.2.0-preview2 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
重要
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 のいずれかが必要になります。
.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 アプリ SDK を使用すると、サード パーティの開発者として、パッケージ化された Win32 アプリのウィジェットを作成し、Windows 11 ウィジェット ボードでローカルにテストできるようになりました。
ウィジェットの詳細については、「ウィジェットの概要」を参照してください。
アプリのウィジェットの開発を開始するには、ウィジェット サービス プロバイダーの開発に関するドキュメントとウィジェットの設計の基礎で、前提条件、ガイダンス、ベスト プラクティスを確認してください。
このリリースには次のような前提条件があります。
- 開発マシンでデベロッパー モードが有効になっている。
- 開発用コンピューターは、ウィジェット ボード バージョン 521.20060.1205.0 以降を使用して、Windows Insider Program (WIP) の開発チャネルから Windows のバージョンを実行しています。
ウィジェット開発時の既知の制限事項
- サードパーティ製ウィジェットは、今回のプレビュー リリースの WIP に登録されたデバイスのローカルでのみテストできます。 Windows アプリ SDK 1.2.0 では、製品版の Windows のユーザーは、Microsoft Store に付属するバージョンのアプリを介して ウィジェットの取得を開始できます。
- パッケージ化された Win32 アプリ用にのみウィジェットを作成できます。 Progressive Web Apps (PWA) 用のウィジェットは、Microsoft Edge 108 の一部としてサポートされる予定です。
.NET を使って開発されたアプリのトリミング
.NET 開発者は、トリミングされた WinAppSDK アプリを発行できるようになりました。 CsWinRT 2.0 では、WinAppSDK で配布される C#/WinRT のプロジェクションをトリミングできるようになりました。 アプリをトリミングして発行すると、トリミング可能なバイナリから使われていないコードが削除されるので、アプリのディスク占有領域を減らすことができます。 また、アプリの起動パフォーマンスも向上する可能性があります。 基本的な Hello World アプリの場合、トリミングして発行すると、ディスク占有領域は約 80%、起動パフォーマンスは約 7% 向上することを確認しました。 WinUI ギャラリーの場合、ディスク占有領域は約 45% 向上することを確認しました。
トリミングを有効にする方法、トリミングの制限 (トリミング可能な型に対するリフレクションなど)、トリミングの警告の詳細については、「自己完結型の展開と実行可能ファイルのトリミング」を参照してください。 開発者は、トリミング後のアプリを徹底的にテストして、すべてが想定どおりに機能することを確認してください。 詳細については、GitHub の issue 2478 を参照してください。
DisplayInformation
Win32 アプリで、WinAppSDK の DisplayInformation クラスを使用してハイ ダイナミック レンジ (HDR) をサポートできるようになりました。 DisplayInformation クラスを使うと、アプリケーション ビューのディスプレイ関連情報を監視できます。 これには、ビューが表示されているディスプレイに影響するアプリケーション ビューの変更と、アプリケーション ビューに影響する可能性があるディスプレイの変更を、クライアントから監視できるようになるイベントが含まれています。
WinUI 3 で解決された問題
- DesktopAcrylicController 経由のアクリル背景素材が Windows 10 アプリでサポートされるようになりました。 詳細については、GitHub の issue 7112 を参照してください。
- App.UnhandledException がアプリケーションへのルーティングに失敗する問題を修正しました。 詳細については、GitHub の issue 5221 を参照してください。
- WinAppSDK 1.1 から ListView のスタイルが回帰して変更される問題を修正しました。 詳細については、GitHub の issue 7666 を参照してください。
その他の制限事項と既知の問題
重要
プロジェクトから WinAppSDK 1.2 を参照すると、次のようなエラーが表示されることがあります: "パッケージのダウングレードが検出されました: Microsoft.Windows.SDK.BuildTools 10.0.22621.1 から 10.0.22000.194"。これは、アプリ プロジェクトと WinAppSDK パッケージからのパッケージへの参照に互換性がないために発生します。 これを解決するには、プロジェクト内の参照を Microsoft.Windows.SDK.BuildTools のより新しく互換性のあるバージョンに更新するか、プロジェクトから参照を削除します。 プロジェクトから削除すると、互換性のあるバージョンが WinAppSDK パッケージによって暗黙的に参照されます。
- Arm64 Visual Studio を使用したビルドは現在サポートされていません。
- ブートストラップとドッキングされていない RegFree WinRT 自動初期化子の既定値は、(現在は) 実行可能ファイル (OutputType=Exe または WinExe) を生成するプロジェクトにのみ設定されています。 そのため、クラス ライブラリ DLL やその他の非実行可能ファイルに自動初期化子を既定で追加できなくなりました。
- 非実行可能ファイル (たとえば、ブートストラッパーを初期化しない汎用実行可能ファイルによって読み込まれるテスト DLL) に自動初期化子が必要な場合、
<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>
または<WindowsAppSdkUndockedRegFreeWinRTInitialize>true</WindowsAppSdkUndockedRegFreeWinRTInitialize>
を使って、プロジェクトで自動初期化子を明示的に有効にすることができます。
- 非実行可能ファイル (たとえば、ブートストラッパーを初期化しない汎用実行可能ファイルによって読み込まれるテスト DLL) に自動初期化子が必要な場合、
- バージョン情報 API (ReleaseInfo と RuntimeInfo) は呼び出すことができますが、バージョン 0 (実際のバージョン情報ではない) を返します。
バージョン 1.2 プレビュー 1 (1.2.0-preview1)
既存の Windows アプリ SDK 1.1 (安定チャネルから) アプリでは、Nuget パッケージを 1.2.0-preview1 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。
更新されたランタイムと MSIX については、Windows App SDK 用のダウンロード ページを参照してください。
WinUI 3
WinUI 3 アプリで、MediaPlayerElement と MediaTransportControls メディア再生コントロールを使ってオーディオとビデオを再生できます。 メディア コントロールの使い方とタイミングについては、「メディア プレイ ヤー」を参照してください。
WinUI 3 は WinUI 2.8 から更新され、最新のコントロール、スタイル、動作になりました。 これらの更新には、InfoBadge コントロールの追加、アクセシビリティとハイ コントラスト モードの機能強化、コントロール全体のバグ修正が含まれています。 詳細については、WinUI 2.7 と WinUI 2.8 のリリース ノートを参照してください。
既知の問題
ListView スタイルは、WinAppSDK 1.1 から後退し、変更されました。
通知
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
が返されるようになりました。
既知の制限事項 (Windowing)
単純なタイトル バーのカスタマイズは、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 仕様を参照してください。
その他の制限事項と既知の問題
- .NET PublishSingleFile はサポートされていません。
バージョン 1.1 プレビュー 3 (1.1.0-preview3)
これは、バージョン 1.1 のプレビュー チャネルの最新リリースです。 すべてのプレビュー チャネル機能がサポートされています (「リリース チャネルで使用できる機能」を参照)。
Windows アプリ SDK 1.0 を使用する既存のアプリで、Nuget パッケージを 1.1.0-preview3 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」 セクションを参照)。 さらに、更新されたランタイムと MSIX については、「Windows App SDK のダウンロード」を参照してください。
Note
C# 開発者の場合は、6.0.202、6.0.104、5.0.407、5.0.213 の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"。
Preview 2 のすべての機能に加えて、次のセクションでは、このリリースの新機能と更新された機能、制限事項、および既知の問題について説明します。
WinUI 3
Mica と Background Acrylic を WinUI 3 アプリケーションで使用できるようになりました。
これらの素材の詳細については、「Windows 11 の素材」を参照してください。 C++ アプリケーションにマイカを適用するためのサンプル コードについては、「WinUI 3 XAML での SystemBackdropController の使用」と、WinUI コントロール ギャラリーの一部として GitHub の C# アプリケーションを参照してください。
通知
修正された問題:
- 1.1.0-preview1 と 1.1.0-preview2 では、一部のパッケージ化されていないアプリで、アプリ アイコンが誤って AppData\LocalMicrosoftWindowsAppSDK にコピーされます。 このリリースでは、代わりに AppData\Local\Microsoft\WindowsAppSDK にコピーされます。 アイコンの漏洩を防ぐには、1.1.0-preview3 に更新した後、誤ったパスにあるアプリ アイコンを手動で削除する必要があります。
- 「ショートカット」によるアプリ通知のアプリアイコンとアプリ表示名の取得がサポートされるようになりました。 このアプリ アイコンは、リソース ファイルで指定されたアイコンよりも優先されます。
- パッケージ化されていないアプリのプッシュ通知のサポートが復元されました (記載された例外については、「制限事項」を参照してください)。 アプリがプッシュ通知をサポートしているかどうかを確認するために、PushNotificationManager::IsSupported API が導入されました。
制限事項:
- 管理者特権でパッケージ化されていないアプリの通知はサポートされていません。 PushNotificationManager::IsSupported は、管理者特権モードのチェックを実行しません。 ただし、今後のリリースでこれをサポートするよう取り組んでいます。
MSIX パッケージ作成ツール
MSIX を拡張し、拡張機能カテゴリを使用して新しい機能を追加し、既存の機能を拡張しました。
- windows.appExecutionAlias
- windows.customDesktopEventLog
- windows.dataShortcuts
- windows.fileTypeAssociation
- windows.fileTypeAssociation.iconHandler
- windows.folder
- windows.shortcut
これらには、Windows App SDK フレームワーク パッケージがインストールされている必要があります。 ランタイムをインストールするには、「Windows App SDK のダウンロード」を参照してください。
環境マネージャー
開発者がレジストリ API を直接使用せずに環境変数を追加、削除、および変更できるようにする API セット。
1.1 Preview 1 からの明確化: 環境マネージャーを使用したアプリがアンインストールされたときの環境変数の変更の自動削除は、パッケージ アプリでのみ使用できます。 さらに、環境変数の変更を元に戻すには、Windows アプリ SDK フレームワーク パッケージをインストールする必要があります (「ランタイム用 Windows アプリ SDK のダウンロード」を参照してください)。
その他の既知の制限
1.1 Preview 2 からの回帰:
- MRT Core API を使用する .NET アプリと、単一プロジェクトの MSIX でデプロイされない WinUI アプリの場合:
- 既存の項目としてプロジェクトに追加され、以前にそれぞれ PRIResource と Content ItemGroups に自動的に含まれていた RESW ファイルと画像ファイルは、これらの ItemGroup には含まれません。 その結果、これらのリソースは PRI の生成中にインデックスが作成されないため、実行時に使用できなくなります。
- 回避策: リソースをプロジェクト ファイルに手動で含め、None ItemGroup から削除します。
- 代替策: 使用可能な場合は、アプリの .NET SDK を 6.0.300 にアップグレードします。 詳細については、「.NET SDK のバージョン要件」を参照してください。
- 既存の項目としてプロジェクトに追加され、以前にそれぞれ PRIResource と Content ItemGroups に自動的に含まれていた RESW ファイルと画像ファイルは、これらの ItemGroup には含まれません。 その結果、これらのリソースは PRI の生成中にインデックスが作成されないため、実行時に使用できなくなります。
- 単一プロジェクトの MSIX でデプロイされない .NET アプリの場合:
- ファイルが Content ItemGroup に 2 回以上追加されると、ビルド エラーが発生します。
- 回避策: 重複するインクルードを削除するか、プロジェクト ファイルで EnableDefaultContentItems を false に設定します。
- ファイルが Content ItemGroup に 2 回以上追加されると、ビルド エラーが発生します。
どちらのリグレッションも、次の安定版リリースで復元されます。
バージョン 1.1 プレビュー 2 (1.1.0-preview2)
これは、バージョン 1.1 のプレビュー チャネルの 2 番目のリリースです。 すべてのプレビュー チャネル機能がサポートされています (「リリース チャネルで使用できる機能」を参照)。
Windows App SDK 1.0 を使用する既存のアプリでは、Nuget パッケージを 1.1.0-preview2 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照)。 さらに、更新されたランタイムと MSIX については、「Windows App SDK のダウンロード」を参照してください。
Note
C# 開発者の場合は、6.0.202、6.0.104、5.0.407、5.0.213 の .NET SDK バージョン (またはそれ以降) のいずれかが必要です。 .NET SDK バージョンを更新するには、「.NET のダウンロード」を参照するか、Visual Studio の最新バージョンに更新してください。 必要な .NET SDK バージョンがない状態で NuGet パッケージを更新すると、次のようなエラーが表示されます: "このバージョンの WindowsAppSDK には WinRT.Runtime.dll バージョン 1.6 以降が必要です。"。
Preview 1 のすべての機能に加えて、次のセクションでは、このリリースの新機能と更新された機能、制限事項、および既知の問題について説明します。
通知
修正された問題:
- 通知を送信するパッケージ ID のないアプリでは、アイコンがアプリのリソースの一部である場合、通知にアプリ アイコンが表示されるようになりました。 アプリ リソースにアイコンがない場合は、Windows の既定のアプリ アイコンが使用されます。
- 実行されていない WinUI 3 アプリは、通知を介してバックグラウンドでアクティブ化できるようになりました。
1.1 Preview 1 からの回帰: パッケージ化されていないアプリのプッシュ通知のサポート。 次のリリースで復元される予定です。
既知の制限事項:
- 自己完結型アプリがプッシュ通知をサポートしているかどうかを確認するために、PushNotificationManager::IsSupported API が導入されました。 ただし、この API はまだ意図したとおりに機能していないため、次のプレビュー リリースで IsSupported API の完全なサポートに注意してください。
- パッケージ化されていない一部のアプリでは、アプリ アイコンが AppData\LocalMicrosoftWindowsAppSDK に誤ってコピーされます。 次のリリースでは、代わりに AppData\Local\Microsoft\WindowsAppSDK にコピーされます。 アイコンの漏洩を防ぐには、開発者は次のリリースにアップグレードした後、間違ったパスでアプリ アイコンを手動で削除する必要があります。
- ショートカットによる通知のアプリアイコンとアプリの表示名取得はサポートされていません。 しかし、今後のリリースでサポートする予定です。
展開
新機能:
- パッケージ アプリで、DeploymentManager.Initialize API を使用して、Windows アプリ SDK ランタイム パッケージを強制的にデプロイできるようになりました。
- ブートストラップ API には、使いやすさとトラブルシューティングを向上させるための新しいオプションが含まれるようになりました。 詳細については、「外部の場所またはパッケージ化されていないアプリでWindows App SDK ランタイムを使用する」および「ブートストラップ初期化エラーに関する豊富な情報」を参照してください。
既知の制限事項:
- 自己完結型の展開は、Windows 10、1903 以降でのみサポートされます。
ウィンドウ設定
USER32.dll
に実装されている機能へのプログラミング アクセスを容易にするために (「Windows とメッセージ」を参照)、このリリースでは、AppWindow 自体にその機能の多くが表示されます。
新機能:
- 既存のウィンドウを持つアプリでは、
ShowWindow(SW_SHOWDEFAULT)
に相当する AppWindow.ShowOnceWithRequestedStartupState を呼び出すことで、ウィンドウの表示方法をより詳細に制御できます。 - アプリでは、ウィンドウを表示、最小化、または復元し、呼び出し時にウィンドウをアクティブ化するかどうかを指定できます。
- アプリで、ウィンドウのクライアント領域のサイズを Win32 座標で設定できるようになりました。
- ウィンドウの z オーダー管理をサポートする API が追加されました。
- AppWindowTitleBar.ExtendsContentIntoTitleBar を使用してカスタム タイトル バーを描画するアプリでは、PreferredTitleBarHeight オプションを設定できます。 標準の高さのタイトルバー、またはインタラクティブなコンテンツ用のスペースを広く提供する背の高いタイトルバーを選択できます。 縦長のタイトル バーを使用する場合に関するアドバイスについては、「Fluent 設計ガイドライン」の「タイトル バー」を参照してください。
既知の制限事項:
- 背の高いタイトルバーのサポートは、Windows 11でのみ使用できます。 私たちは、他のカスタム タイトルバー API と共に、このレベルを下げることに取り組んでいます。
WinUI 3
修正された問題:
- WebView2 SDK を 1020.46 から 1185.39 にアップグレードすると、C/C++ ランタイム (CRT) がインストールされていない場合に、WebView2 を使った C# アプリが起動時にクラッシュする問題を修正しました。
- 一部の丸い角が、単色のはずがグラデーションで表示される問題を修正しました。 詳細については、GitHub の issue 6076 & issue 6194 を参照してください。
- 更新されたスタイルが generic.xaml に含まれていない問題を修正しました。
- ListView の末尾までスクロールするとアプリがクラッシュするレイアウト サイクルの問題を修正しました。 詳細については、GitHub の issue 6218 を参照してください。
パフォーマンス
C# アプリケーションでは、いくつかのパフォーマンスが向上しています。 詳細については、C#/WinRT 1.6.1 リリース ノートを参照してください。
バージョン 1.1 プレビュー 1 (1.0.0-preview1)
これは、バージョン 1.1 のプレビュー チャネルの最初のリリースです。 すべてのプレビュー チャネル機能がサポートされています (「リリース チャネルで使用できる機能」を参照)。
Windows アプリ SDK 1.0 を使用する既存のアプリで、Nuget パッケージを 1.1.0-preview1 に更新できます (「NuGet パッケージ マネージャーを使用して Visual Studio でパッケージをインストールおよび管理する」の「パッケージの更新」セクションを参照してください)。 さらに、更新されたランタイムと MSIX については、「Windows App SDK のダウンロード」を参照してください。
以下のセクションでは、このリリースの新機能と更新された機能、制限事項、既知の問題について説明します。
WinUI 3
既知の問題: ドラッグ アンド ドロップが有効になっている場合、ユーザーは要素をドロップできません。
昇格された (管理者) サポート
Windows App SDK 1.1 Preview 1 を使用すると、アプリ (WinUI 3 を含む) を管理者特権で実行できます。
重要な制限事項
- 現在Windows 11 でのみ使用できます。 ただし、今後のリリースでこのサポートのレベルを下げることを検討しています。
既知の問題
- WinUI 3 アプリは、ドラッグ アンド ドロップ操作中に要素をドラッグするとクラッシュします。
自己完結型の展開
Windows アプリ SDK 1.1 では、自己完結型のデプロイのサポートが導入されます。 デプロイの概要では、フレームワーク依存デプロイと自己完結型デプロイの違いと、開始方法について詳しく説明します。
既知の問題:
パッケージ化された C++ アプリでは、VCLibs へのフレームワーク参照を削除する自己完結型の
.targets
ファイルのバグを回避するために、プロジェクト ファイルの下部に以下を追加する必要があります。<PropertyGroup> <IncludeGetResolvedSDKReferences>true</IncludeGetResolvedSDKReferences> </PropertyGroup> <Target Name="_RemoveFrameworkReferences" BeforeTargets="_ConvertItems;_CalculateInputsForGenerateCurrentProjectAppxManifest"> <ItemGroup> <FrameworkSdkReference Remove="@(FrameworkSdkReference)" Condition="'%(FrameworkSdkReference.SDKName)' == 'Microsoft.WindowsAppRuntime.1.1-preview1'" /> </ItemGroup> </Target>
Windows 10、1903 以降でのみサポートされます。
通知
パッケージ アプリ (外部の場所を使うパッケージ アプリを含みます) とパッケージ化されていないアプリの開発者は Windows 通知を送信できるようになりました。
新機能:
- パッケージ アプリとパッケージ化されていないアプリのアプリ通知をサポートします。 GitHub の詳細
- 開発者は、ローカルまたは独自のクラウド サービスから、トースト通知とも呼ばれるアプリ通知を送信できます。
- パッケージ化されたアプリとパッケージ化されていないアプリのプッシュ通知のサポート。 GitHub の詳細
- 開発者は、独自のクラウド サービスから直接通知またはアプリ通知を送信できます。
制限事項:
- 自己完結型として公開されているアプリでは、プッシュ通知がサポートされていない場合があります。 次のプレビュー リリースでは、プッシュ通知のサポートを確認するために IsSupported API に注目してください。
- アプリ通知を送信するパッケージ化されていないアプリは、コンソール アプリケーションでない限り、アプリ通知にアプリ アイコンが表示されません。 パッケージ化されていないコンソール アプリは、ToastNotificationsDemoApp サンプルに示されているパターンに従う必要があります。
- プッシュ通知をサポートするには、Windows アプリ SDK ランタイムをインストールする必要があります (インストーラーについては、「Windows アプリ SDK のダウンロード」を参照してください)。
- 実行されていない WinUI 3 アプリは、通知を介してバックグラウンドでアクティブ化することはできません。 しかし、今後のリリースでサポートする予定です。
環境マネージャー
開発者がレジストリ API を直接使用せずに環境変数を追加、削除、および変更できるようにする API セット。
新機能
- 環境マネージャーを使用していたアプリがアンインストールされたときに、環境変数の変更を自動的に削除します。
制限事項
- 現在C# アプリでは使用できません。 ただし、今後のリリースでこの機能を C# アプリに導入することを検討しています。
その他の制限事項と既知の問題
- 1.1.0 Preview 1 で C# を使用している場合は、少なくとも .NET SDK 6.0.201、6.0.103、5.0.212、または 5.0.406 のいずれかの .NET SDK バージョンを使用する必要があります。 .NET SDK をアップグレードするには、最新バージョンの Visual Studio に更新するか、「.NET のダウンロード」を参照してください。
バージョン 1.0 プレビュー 3 (1.0.0-preview3)
プレビュー 3 は、Windows App SDK のバージョン1.0 のプレビュー チャネルの最新リリースです。 プレビュー 3 では、すべてのプレビュー チャネル機能がサポートされています。
1.0 Preview 3 Visual Studio 拡張機能 (VSIX) のダウンロード
Note
Windows App SDK Visual Studio 拡張機能 (VSIX) が既にインストールされている場合は、新しいバージョンをインストールする前にアンインストールします。 手順については、「Visual Studio の拡張機能の管理」を参照してください。
下のテーブルから、1.0 プレビュー 3 リリースの Visual Studio 拡張機能 (VSIX) をダウンロードできます。 すべてのバージョンについては、「Windows App SDK 用のダウンロード」を参照してください。 まだ行っていない場合は、「Windows App SDK のツールをインストールする」の手順を使用して、開発環境を構成することから始めます。
次の拡張機能は、お使いの Visual Studio のプログラミング言語とバージョンに合わせて調整されています。
1.0 プレビュー 3 のダウンロード | 説明 |
---|---|
C# Visual Studio 2019 拡張機能 | Windows App SDK Visual Studio 2019 拡張機能を使用して C# アプリをビルドします。 |
C++ Visual Studio 2019 拡張機能 | Windows App SDK Visual Studio 2019 拡張機能を使用して C++ アプリをビルドします。 |
C# Visual Studio 2022 拡張機能 | Windows App SDK Visual Studio 2022 拡張機能を使用して C# アプリをビルドします。 |
C++ Visual Studio 2022 拡張機能 | Windows App SDK Visual Studio 2022 拡張機能を使用して C++ アプリをビルドします。 |
.exe インストーラーと MSIX パッケージ |
.exe インストーラーと MSIX パッケージを使用して、アプリに Windows App SDK をデプロイします。 |
次のセクションでは、1.0 Preview 3 の新機能と更新された機能、制限事項、および既知の問題について説明します。
WinUI 3
MSIX パッケージを使用せずに、WinUI 3 アプリのデプロイをサポートするようになりました。 パッケージ化されていないデプロイをサポートするように WinUI 3 アプリケーションを構成するには、「最初の WinUI 3 プロジェクトを作成する」を参照してください。
重要な制限事項
- 非パッケージ WinUI 3 アプリケーションは、Windows バージョン 1909 以降でのみサポートされています。
- 非パッケージ WinUI 3 アプリケーションは、x86 と x64 でサポートされています。arm64 サポートが次の安定リリースで追加されます。
- 非パッケージ アプリには、Visual Studio 2019 または Visual Studio 2022 のための単一プロジェクト MSIX パッケージ ツールが必要です。
- 非パッケージ アプリでは、.NET 3.5 をインストールするように求めるメッセージが表示されることがあります。この場合、無視してかまいません。
- 一部の API は、非パッケージ アプリでは現在サポートされていません。 次の安定リリースでこれを修正することを目指しています。 いくつか例を示します。
- ApplicationData
- StorageFile.GetFileFromApplicationUriAsync
- ApiInformation (Windows 10 ではサポートされていません)
- Package.Current
- ListView、CalendarView、GridView の各コントロールは不適切なスタイルを使用しているため、次の安定リリースでこれを修正することを目指しています。
詳細について、または WinUI 3 で開発を開始するには、以下を参照してください。
その他の制限事項と既知の問題
非パッケージ アプリは、Windows 10 バージョン 1809 ではサポートされていません。 安定チャネルの次のリリースでこれを修正することを目指しています。
C++ UWP ツールがインストールされていない場合、C# 単一プロジェクト MSIX アプリはコンパイルされません。 C# 単一プロジェクト MSIX プロジェクトがある場合は、C++ (v14x) ユニバーサル Windows プラットフォーム ツール オプション コンポーネントをインストールする必要があります。
このリリースでは、C# と C++ のために [空のアプリ、パッケージ (WinUI 3 in Desktop)] プロジェクト テンプレートが導入されています。 これらのテンプレートを使用すると、個別のパッケージ プロジェクトを使用せずに、アプリを MSIX パッケージに組み込むことができます (「単一プロジェクト MSIX を使用してアプリをパッケージ化する」を参照してください)。 このリリースでは、これらのテンプレートにいくつかの既知の問題があります。
Visual Studio を再起動するまで、[公開] メニュー項目が表示されない。 [空のアプリ、パッケージ (WinUI 3 in Desktop)] プロジェクト テンプレートを使用して Visual Studio 2019 と Visual Studio 2022 の両方で新しいアプリを作成するときには、Visual Studio を閉じてもう一度開くまで、プロジェクトを公開するコマンドがメニューに表示されません。
単一プロジェクト MSIX パッケージを使用して、C++ 静的/動的ライブラリ プロジェクト参照を C++ アプリに追加するときのエラー。 Visual Studio で、プロジェクトの種類に互換性がないため、プロジェクトを参照として追加できないというエラーが表示されます。
クラス ライブラリ プロジェクトでカスタム ユーザー コントロールを参照するときのエラー。 指定されたパスが見つからないというエラーが発生すると、アプリケーションがクラッシュします。
Visual Studio 2019 のための C# または C++ テンプレート。 プロジェクトをビルドしようとすると、"The project doesn't know how to run the profile project name" というエラーが発生します。 この問題を解決するには、単一プロジェクト MSIX パッケージ ツール拡張機能をインストールします。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 Visual Studio で、[デバッグの開始] または [デバッグなしで開始] を選択したときに、アプリがデプロイされて実行されない (そして Visual Studio からのフィードバックがない) 場合は、ソリューション エクスプローラーでプロジェクト ノードをクリックして選択し、再試行します。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 開発用コンピューター上でプロジェクトを実行またはデバッグしようとすると、次のようなエラーが発生します。"The project needs to be deployed before we can debug. Please enable Deploy in the Configuration Manager." この問題を解決するには、構成マネージャーでプロジェクトのデプロイを有効にします。 詳細な手順については、「最初の WinUI 3 プロジェクトを作成する」を参照してください。
プレビュー 4 までの Visual Studio 2022 バージョン17.0 リリースの C++ テンプレート。 プロジェクトを初めて実行しようとすると、次のようなエラーが発生します。"There were deployment errors"。 この問題を解決するには、プロジェクトをもう一度実行またはデプロイします。 この問題は、Visual Studio 2022 バージョン 17.0 プレビュー 7 で修正される予定です。
Any CPU ビルド構成のサポートがない: Windows App SDK を既存の .NET アプリケーションまたはコンポーネントに追加し、それが Any CPU をサポートする場合は、希望するアーキテクチャ
x86
、x64
、またはarm64
を指定する必要があります。1.0 Preview 3 を使用する C# プロジェクトでは、次の .NET SDK を使用する必要があります: .NET 6 SDK 以降 (「.NET のダウンロード」および「.NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
1.0 プレビュー 1 と プレビュー 2 に影響する重要な問題
Windows App SDK のバージョン 1.0 プレビュー 1 とプレビュー 2 には、パッケージ アプリがアンインストールされたときにそのアプリによって行われた環境変数の変更をすべてクリーンアップするためのメカニズムが含まれています。 この機能は試験的な状態であり、最初のリリースには、システム PATH 環境変数を破損する可能性がある既知のバグが含まれています。
プレビュー 1 とプレビュー 2 では、拡張文字 %
を含むすべての PATH 環境変数が破損されます。 これは、パッケージ アプリがアンインストールされるたびに、そのアプリが Windows App SDK を使用しているかどうかに関係なく発生します。
PATH 環境変数の破損の問題についても参照してください。
詳細
システム PATH エントリは、Windows レジストリの次のキーの Path 値に格納されます。
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
レジストリ エディター (regedit.exe
) を起動する場合は、上のパスをコピーし、(メニュー バーのすぐ下にある) 階層リンク バーに貼り付け、Enter キーを押してキーを検索することができます。
そのキーの Path 値は REG_EXPAND_SZ 型である "必要があります" が、バグによってそれが REG_SZ に変更されます。 また、変数拡張文字 %
が含まれている場合は、システム PATH 環境変数が使用できなくなります。
影響を受けるリリース
対応策
コンピューターを良好な状態に戻すには、次の手順を実行します。
レジストリ内の PATH が破損しているかどうかを確認し、該当する場合は、下のスクリプトを実行してリセットします。
次の Windows PowerShell スクリプトで手順 1 を実行できます (PowerShell Core では機能しません)。 昇格して実行します。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # If the PATH in the Registry has been set to REG_SZ, then delete # it, and recreate it as REG_EXPAND_SZ. $EnvPath = 'Registry::HKLM\System\CurrentControlSet\Control\Session Manager\Environment' $Environment=Get-Item $EnvPath $PathKind = $Environment.GetValueKind('Path') if ($PathKind -ne 'ExpandString') { $Path = $Environment.GetValue('Path') Remove-ItemProperty $EnvPath -Name Path New-ItemProperty $EnvPath -Name Path -PropertyType ExpandString -Value $Path }
Windows App SDK 1.0 プレビュー 1 またはプレビュー 2 を使用するすべてのアプリをアンインストールします (以下のスクリプトを参照してください)。
バグが含まれているパッケージを含めて、Windows App SDK 1.0 プレビュー 1/プレビュー 2 パッケージをアンインストールします (以下のスクリプトを参照してください)。
次の Windows PowerShell スクリプトで手順 2 と 3 を実行できます (PowerShell Core では機能しません)。 昇格して実行します。
# This script must be run from an elevated Windows PowerShell # window (right-click Windows PowerShell in the Start menu, # and select Run as Administrator). # Remove the Windows App SDK 1.0 Preview1/2, and all apps that use it. $winappsdk = "Microsoft.WindowsAppRuntime.1.0-preview*" Get-AppxPackage | Where-Object { $_.Dependencies -like $winappsdk } | Remove-AppxPackage Get-AppxPackage $winappsdk | Remove-AppxPackage
Windows App SDK 1.0 プレビュー 3 での修正
PATH 環境変数が破損する原因となっている機能は、今後の Windows App SDK 1.0 プレビュー 3 リリースで削除される予定です。 後日、すべてのバグが修正され、全面的にテストされた後で、再導入される可能性があります。
バージョン 1.0 プレビュー 3 を使うことをお勧めします。
バージョン 1.0 プレビュー 2 (1.0.0-preview2)
重要
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのいずれかのプレビューを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
これは、バージョン 1.0 のプレビュー チャネルの最新リリースです。 すべてのプレビュー チャネル機能がサポートされています。
以下のセクションでは、このリリースの新機能と更新された機能、制限事項、既知の問題について説明します。
WinUI 3
新しい更新:
- WinUI 2.6 からの最新の Windows スタイルを反映するようにコントロールが更新されました。
- 単一プロジェクト MSIX がサポートされています。
- WinUI 3 パッケージで、ビルド 17763 以降をターゲットにできるようになりました。 詳細については、問題 #921 を参照してください。
- アプリ内ツール バーがサポートされています。 ただし、アプリ内ツール バーと既存のホット リロード/ライブ ビジュアル ツリーのサポートには、10 月後半に提供される予定の Visual Studio 17.0 プレビュー 5 リリースが必要です。
バグ修正: WebView2Runtime テキストがローカライズされました。
詳細について、または WinUI 3 での開発を開始するには、以下を参照してください。
ウィンドウ化
このリリースでは、Appwindow クラスへの更新が導入されています。 このリリースでは、主要な新機能は追加されていませんが、メソッド名とプロパティが変更され、いくつかの戻り値が削除されました。 更新の詳細については、ドキュメントとサンプルを参照してください。 1.0 試験版または 1.0 プレビュー 1 のリリースで AppWindow を操作した場合は、コードにいくつかの変更を加える必要があります。
新しい更新:
- AppWindowConfiguration クラスが削除されました。 このクラスのプロパティは、AppWindow 自体、または Presenter クラスで使用できるようになりました。
- この空間の WINRT API メソッドのほとんどの
bool
戻り値が削除され、void
になりました。これらのメソッドは常に成功するためです。 - GetWindowIdFromWindow と GetWindowFromWindowId では、C# importdll の呼び出しが不要になりました。 代わりに、Microsoft.UI.Win32Interop クラスで使用できる .NET ラッパー メソッドを使用してください。
重要な制限事項:
- 現在、Windows App SDK には、UI フレームワーク コンテンツを AppWindow にアタッチするためのメソッドが用意されていません。HWND 相互運用アクセス メソッドを使用するように制限されています。
- ウィンドウ タイトル バーのカスタマイズは、Windows 11 でのみ機能します。 タイトル バー カスタマイズ機能のサポートを確認するには、IsCustomizationSupported メソッドを使用します。 この機能を下位レベルでも導入する予定です。
詳細については、「アプリ ウィンドウの管理」を参照してください。
入力
新しい更新:
- 高精度タッチパッド入力のサポートが改善されました。
重要な制限事項:
- すべての PointerPoint 静的ファクトリ関数が削除されました。GetCurrentPoint、GetCurrentPointTransformed、GetIntermediatePoints、GetIntermediatePointsTransformed。
- Windows App SDK では、ポインター ID を使用した PointerPoint オブジェクトの取得はサポートされていません。 代わりに、PointerPoint メンバー関数 GetTransformedPoint を使用して、既存の PointerPoint オブジェクトの変換されたバージョンを取得できます。 中間点として、PointerEventArgs メンバー関数 GetIntermediatePoints と GetTransformedIntermediatePoints を使用できます。 詳細については、ドキュメントを参照してください。
MRT Core
新しい更新:
- アプリ開発者は、.NET プロジェクトの PRI ファイルでインデックスが作成されないように、イメージ ファイルまたは RESW ファイルを選択して除外できるようになりました。 詳細については、問題 980 を参照してください。
重要な制限事項:
- .NET プロジェクトでは、アプリが既にビルドされている場合、コピーしてプロジェクト フォルダーに貼り付けられたリソース ファイルには、F5 でインデックスが作成されません。 回避策として、アプリをリビルドします。 詳細については、問題 1503 を参照してください。
- .NET プロジェクトでは、ビルド アクションを手動で設定しないと、外部フォルダーから追加された既存のリソース ファイルには、インデックスが作成されません。 この問題を回避するには、Visual Studio のビルド アクションを設定します (イメージ ファイルの場合は [コンテンツ]、RESW ファイルの場合は [PRIResource])。 詳細については、問題 1504 を参照してください。
非パッケージ アプリのデプロイ
新機能:
- Windows アプリ SDK 1.0 Preview 2 では、ブートストラップ API の .NET ラッパーが導入されています (「外部の場所でパッケージ化されたアプリまたはパッケージ化されていないアプリに Windows アプリ SDK ランタイムを使用する」を参照してください)。 ブートストラップ API はネイティブ C/C++ 関数のセットです。非パッケージ アプリは、実行時に Windows App SDK フレームワーク パッケージに対する依存関係を動的に取得するために、この API を使用する必要があります。 .NET ラッパーを使用すると、Windows フォームや WPF アプリなどの .NET アプリからブートストラップ API を簡単に呼び出すことができます。 ブートストラップ API 用の .NET ラッパーが Microsoft.WindowsAppRuntime.Bootstrap.Net.dll アセンブリ内に用意されています。これはアプリ プロジェクトのローカルにあります。 .NET ラッパーの詳細については、.NET ラッパー ライブラリに関する記事を参照してください。
- パッケージ アプリは、デプロイ API を使用して、コンピューターにインストールされているメインとシングルトンの MSIX パッケージを取得できるようになりました。 メインとシングルトンのパッケージはアプリと共にインストールされるフレームワーク パッケージの一部ですが、Windows アプリケーション モデルには制限があるため、それらのパッケージをインストールするためには、パッケージ アプリでこの追加の手順を実行する必要があります。 展開 API のしくみについては、「フレームワークに依存するパッケージ 化されたアプリのWindows アプリ SDK展開ガイド」を参照してください。
重要な制限事項:
- ブートストラップ API 専用の .NET ラッパーは、Windows App SDK へのアクセスを簡略化するための非パッケージ .NET アプリケーションによる使用のみを目的としています。
- 完全に信頼されているか、packageManagement の制限された機能を持つ MSIX パッケージ アプリのみが、デプロイ API を使用してメインとシングルトンのパッケージの依存関係をインストールするアクセス許可を持っています。 部分的に信頼されているパッケージ アプリのサポートは、今後のリリースで予定されています。
- X64 システムで DeploymentManager.Initialize メソッドを使用する x86 アプリを F5 でテストする場合は、WindowsAppRuntimeInstall.exe を実行して、x64 フレームワークが最初にインストールされていることを確認します。 そうしないと、Visual Studio は x64 フレームワークをデプロイしないため、NOT_FOUND エラーが発生します。通常、これは Store のデプロイまたはサイドローディングを通じて発生します。
アプリのライフサイクル
アプリのライフサイクル機能のほとんどは UWP プラットフォームに既に存在しており、デスクトップ アプリの種類 (特に、非パッケージ コンソール アプリ、Win32 アプリ、Windows フォーム アプリ、WPF アプリ) で使用するために Windows App SDK に取り込まれています。 UWP プラットフォーム自体に同等の機能があるため、これらの機能の Windows App SDK 実装は、UWP アプリでは使用できません。
UWP 以外のアプリを MSIX パッケージにパッケージ化することもできます。 これらのアプリでは Windows App SDK のアプリのライフサイクル機能の一部を使用できますが、マニフェストの手法が使用できる場合はそれを使用する必要があります。 たとえば、Windows App SDK の RegisterForXXXActivation API を使用することはできず、代わりにマニフェストを使用してリッチ アクティベーションに登録する必要があります。
パッケージ化されたアプリのすべての制約は、パッケージ化された WinUI 3 アプリにも適用されます。また、以下で説明するように、追加の考慮事項があります。
重要な考慮事項:
リッチ アクティベーション: GetActivatedEventArgs
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 使用可能ですが、これらのアプリはプラットフォーム
GetActivatedEventArgs
を使用することもできます。 プラットフォームは Windows.ApplicationModel.AppInstance を定義し、Windows App SDK は Microsoft.Windows.AppLifecycle.AppInstance を定義していることに注意してください。 また、UWP アプリはFileActivatedEventArgs
やLaunchActivatedEventArgs
などのActivatedEventArgs
クラスを使用できるのに対して、Windows App SDK AppLifecycle 機能はクラスではなくインターフェイス (たとえば、IFileActivatedEventArgs
、ILaunchActivatedEventArgs
など) を使用する必要があります。 - WinUI 3 アプリ: WinUI 3 の App.OnLaunched には Microsoft.UI.Xaml.LaunchActivatedEventArgs が与えられますが、プラットフォーム
GetActivatedEventArgs
は Windows.ApplicationModel.IActivatedEventArgs を返し、WindowsAppSDKGetActivatedEventArgs
はプラットフォームLaunchActivatedEventArgs
を表すことができる Microsoft.Windows.AppLifecycle.AppActivationArguments オブジェクトを返します。 - 詳細については、「リッチ アクティベーション」を参照してください。
リッチ アクティベーションの登録/登録解除
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 使用不可です。代わりにアプリの MSIX マニフェストを使用してください。
- 詳細については、「リッチ アクティベーション」を参照してください。
単一または複数のインスタンス化
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 完全に使用可能です。
- WinUI 3 アプリ: アプリが他のインスタンスを検出してアクティブ化をリダイレクトする場合は、できるだけ早く、ウィンドウなどを初期化する前に行う必要があります。これを有効にするには、アプリでDISABLE_XAML_GENERATED_MAINを定義し、検出とリダイレクトを実行できるカスタム Main (C#) または WinMain (C++) を記述する必要があります。
- RedirectActivationToAsync は非同期呼び出しであり、アプリが STA で実行されている場合は、非同期呼び出しで待機しないでください。 Windows フォームと C# WinUI 3 アプリの場合は、必要に応じて Main を非同期として宣言できます。 C++ WinUI 3 および C# WPF アプリの場合、Main を非同期として宣言することはできないため、代わりにリダイレクト呼び出しを別のスレッドに移動して、STA をブロックしないようにする必要があります。
- 詳細については、「アプリのインスタンス化」を参照してください。
電源/状態通知
- 非パッケージ アプリ: 完全に使用可能です。
- パッケージ アプリ: 完全に使用可能です。
- 詳細については、「電源管理」を参照してください。
既知の問題:
動詞ハンドラーのコマンド ライン テンプレートを設定するときに、ファイルの種類の関連付けによって %1 が %251 になるように誤ってエンコードされるため、非パッケージ Win32 アプリがクラッシュします。 部分的な回避策として、代わりにレジストリ値が %1 になるように手動で編集できます。 ターゲット ファイルのパスにスペースが含まれている場合も、失敗します。そのシナリオに対する回避策はありません。
その他の制限事項と既知の問題
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのいずれかのプレビューを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
このリリースでは、C# と C++ のプロジェクトのために [空のアプリ、パッケージ (WinUI 3 in Desktop)] テンプレートが導入されています。 これらのテンプレートを使用すると、個別のパッケージ プロジェクトを使用せずに、アプリを MSIX パッケージに組み込むことができます。 このリリースでは、これらのテンプレートにいくつかの既知の問題があります。
Visual Studio 2019 のための C# テンプレート。 プロジェクトをビルドしようとすると、"The project doesn't know how to run the profile project name" というエラーが発生します。 この問題を解決するには、単一プロジェクト MSIX パッケージ ツール拡張機能をインストールします。
Visual Studio 2019 と Visual Studio 2022 のための C# テンプレート。 開発用コンピューター上でプロジェクトを実行またはデバッグしようとすると、次のようなエラーが発生します。"The project needs to be deployed before we can debug. Please enable Deploy in the Configuration Manager." この問題を解決するには、構成マネージャーでプロジェクトのデプロイを有効にします。 詳細な手順については、「最初の WinUI 3 プロジェクトを作成する」を参照してください。
Visual Studio 2019 と Visual Studio 2022 のための C++ テンプレート。 このリリースでは、これらのプロジェクトは、UWP アプリから呼び出すことができる Win32 API のサブセットの呼び出しに制限されています。 [Blank App, Packaged with WAP (WinUI 3 in Desktop) (空のアプリ、WAP を使用したパッケージ (デスクトップの WinUI 3))] テンプレートは、この問題の影響を受けません。
プレビュー 4 までの Visual Studio 2022 バージョン17.0 リリースの C++ テンプレート。 プロジェクトを初めて実行しようとすると、次のようなエラーが発生します。"There were deployment errors"。 この問題を解決するには、プロジェクトをもう一度実行またはデプロイします。 この問題は、Visual Studio 2022 バージョン 17.0 Preview 5 で修正される予定です。
プッシュ通知 API (Microsoft.Windows.PushNotifications 名前空間) が 1.0 プレビュー 2 リリースに誤って含まれています。 これはまだ試験的な機能であり、使用するには、代わりに 1.0 試験版リリースをインストールする必要があります。 この機能は、今後の 1.0 リリースから削除されます。
アプリのライフサイクル API (Microsoft.Windows.AppLifecycle 名前空間) の試験的な属性が 1.0 プレビュー 2 リリースに誤って含まれています。 試験的な属性は、次のリリースでこの API から削除される予定です。
Any CPU ビルド構成のサポートがない: Windows App SDK を既存の .NET アプリケーションまたはコンポーネントに追加し、それが Any CPU をサポートする場合は、希望するアーキテクチャ
x86
、x64
、またはarm64
を指定する必要があります。1.0 Preview 2 を使用する C# プロジェクトでは、.NET SDK (.NET 6 SDK 以降) を使用する必要があります (「.NET のダウンロードと .NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
バージョン 1.0 プレビュー 1 (1.0.0-preview1)
重要
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのいずれかのプレビューを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
これは、バージョン 1.0 のプレビュー チャネルの最初のリリースです。 すべてのプレビュー チャネル機能がサポートされています。
以下のセクションでは、このリリースの新機能と更新された機能、制限事項、既知の問題について説明します。
WinUI 3
WinUI 3 のこのリリースでは、バグ修正を含む 1.0 に向けたビルドに重点が置かれています。
- 新機能: プレビュー 1 に新機能はありません。
- 修正済みの問題: このリリースで解決されたすべての問題の一覧については、GitHub リポジトリを参照してください。
詳細について、または WinUI 3 での開発を開始するには、以下を参照してください。
ウィンドウ化
このリリースでは、試験版 1で導入されたウィンドウ化 API がプレビュー状態になります。 バグ修正、安定性、API シグネチャに対する調整に焦点を合わせているため、このリリースには主要な新機能の領域がありません。 注目すべき変更内容と追加内容を以下に示します。
新機能:
- DisplayAreaWatcher がウィンドウ化 API に追加されました。 これにより、開発者は、表示トポロジでの変更を観察し、システムで現在定義されている DisplayArea を列挙することができます。
- AppWindow では、SetIcon メソッドを使用したウィンドウ アイコンの設定がサポートされるようになりました。また、AppWindowTitleBar では、IconShowOptions プロパティを使用して、ウィンドウ アイコンをシステム メニューと共に表示するか非表示にするかを選択できるようになりました。
重要な制限事項:
- このリリースの AppWindow は現在、Win32 アプリでのみ使用できます (パッケージと非パッケージの両方)。
- 現在、Windows App SDK には、UI フレームワーク コンテンツを AppWindow にアタッチするためのメソッドが用意されていません。HWND 相互運用アクセス メソッドを使用するように制限されています。
- ウィンドウ タイトル バーのカスタマイズは、Windows 11 でのみ機能します。 タイトル バー カスタマイズ機能のサポートを確認するには、IsCustomizationSupported メソッドを使用します。 この機能を下位レベルでも導入する予定です。
詳細については、「アプリ ウィンドウの管理」を参照してください。
入力
このリリースでは、入力 API にいくつかの新機能が導入されています。 注目すべき変更内容と追加内容を以下に示します。
新機能と機能の更新:
- PointerPredictor は、入力の待機時間が重要なアプリケーション (手書き入力アプリケーションなど) に、今後の入力ポイントの位置を 15 ミリ秒までの精度で予測する機能を提供して、待機時間の改善とスムーズなアニメーションを実現します。
- PenDeviceInterop を使用すると、FromPointerPoint メソッドを使用して、Windows.Devices.Input.PenDevice への参照を取得できます。
- InputCursor は、
CoreCursor
に存在する "カスタム" 型を削除し、CoreCursor
オブジェクトを個別のオブジェクトに分割することで、事前に設定されたシステム カーソルの種類とカスタム カーソルの種類を明確に区別します。 - InputCursor API への更新。
- GestureRecognizer が試験段階から Microsoft.UI.Input に移動されました。
- PointerPoint が試験段階から Microsoft.UI.Input に移動されました。
- マウス、タッチ、ペン入力は、WinUI 3 のドラッグ アンド ドロップで完全にサポートされています。
重要な制限事項:
- このリリースの入力 API には、Windows バージョン 1809 に関する既知の問題があります。
- MRT Core は、InputCursor のサブタイプではまだサポートされていません。
- プラットフォーム SDK API の直接使用 Windows.UI.Core.CoreDragOperation は、WinUI 3 アプリケーションでは機能しません。
- PointerPoint プロパティ RawPosition と ContactRectRaw は、予測値ではない値 (OS 内の通常の値と同じ) を参照していたため、削除されました。 代わりに Position と ContactRect を使用してください。 ポインター予測は、Microsoft.UI.Input.PointerPredictor API オブジェクトで処理されるようになりました。
MRT Core
バージョン 1.0 プレビュー 1 以降、MRT Core API は、Microsoft.ApplicationModel.Resources 名前空間から Microsoft.Windows.ApplicationModel.Resources 名前空間に移動されました。
その他の制限事項と既知の問題
バージョン 1.0 プレビュー 1 とプレビュー 2 には重大なバグが含まれています。 これらのいずれかのプレビューを既にインストールしている場合は、問題の解決方法を参照してください。 代わりに、バージョン 1.0 プレビュー 3 を使うことをお勧めします。
C++ の [Blank App, Packaged with WAP (WinUI 3 in Desktop) (空のアプリ、WAP を使用したパッケージ (デスクトップの WinUI 3))] プロジェクト テンプレートを使用して作成されたプロジェクトでは、既定で次のビルド エラーが発生します:
fatal error C1083: Cannot open include file: 'winrt/microsoft.ui.dispatching.co_await.h': No such file or directory
。 この問題を解決するには、pch.h ファイルから次のコード行を削除します。 この問題は次のリリースで修正される予定です。#include <winrt/microsoft.ui.dispatching.co_await.h>
DispatcherQueue.TryEnqueue (ディスパッチャー キュー スレッドで実行を再開するため) の代わりの手段は、Windows Implementation Library (WIL) の resume_foreground ヘルパー関数を使用することです。
- プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
#include <wil/cppwinrt_helpers.h>
をpch.h
に追加します。#include <winrt/Microsoft.UI.Dispatching.h>
をpch.h
に追加します。- ここで、
co_await wil::resume_foreground(your_dispatcherqueue);
を指定します。
Any CPU ビルド構成のサポートがない: Windows App SDK はネイティブ コードで記述されているため、Any CPU ビルド構成をサポートしていません。 Visual Studio の WinUI 3 テンプレートでは、アーキテクチャ固有のビルドのみが許可されます。 Any CPU をサポートする既存の .NET アプリケーションまたはコンポーネントに Windows App SDK を追加した場合、目的のアーキテクチャ (
x86
、x64
、arm64
) を指定する必要があります。.NET アプリはビルド 18362 以降をターゲットにする必要がある: TFM は、
net6.0-windows10.0.18362
以降に設定する必要があり、パッケージ プロジェクトの<TargetPlatformVersion>
は 18362 以降に設定する必要があります。 詳細については、GitHub に関する既知の問題に関するページを参照してください。1.0 Preview 1 を使用する C# プロジェクトでは、.NET 6 SDK 以降の .NET SDK を使用する必要があります (「.NET のダウンロード」および「.NET 5 は 2022 年 5 月 10 日にサポート終了」を参照)。
Windows 10 バージョン 1809 ではサポートされない非パッケージ アプリ: これは、次のリリースで解決されます。
関連トピック
Windows developer
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示