Windows App SDK のプレビュー チャネルのリリース ノート

重要

プレビュー チャネルは、運用環境での使用ではサポートされていません。また、プレビュー リリースを使用するアプリを Microsoft Store に公開することはできません。

プレビュー チャネルは、次回の安定リリースのプレビューを提供します。 指定されたプレビュー チャネル リリースと次期安定リリースとの間に API の破壊的変更がある場合があります。 プレビュー チャネル リリースには試験版 API は含まれていません。

重要なリンク:

バージョン 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 クラス用ドキュメンテーションを参照してください。

WinUI Maps コントロール

WinUI Maps コントロールの最初のリリースが利用可能になりました。 このコントロールは、WebView2 と Azure Maps を利用し、次の機能を提供します。

  • マップ ボタンまたはタッチによるパンとズーム。
  • マップのスタイルを、サテライト、地形、またはストリート ビューに変更。
  • 開発者がカスタマイズ可能なアイコンを含む対話可能なピンをプログラムでマップに追加。
  • 初期読み込みがマップに基づく箇所における開発者によるカスタマイズ。
  • パン、ズーム、マップ スタイルのボタンの非表示または表示に対する開発者によるコントロール。

Note

Maps コントロールを使用するには、Azure Maps キーが必要です。 キーを作成するには、Web アプリ作成用 Azure Maps ドキュメンテーション ページを参照してください。

Maps コントロールは全く新しい機能であり、今後の方向性の評価のため皆様のフィードバックをお待ちしております。

WinAppSDK における他の新機能

バグ修正

  • プロジェクション 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 コントロールは、データ コレクションを表示します。 ItemsViewListView および GridView コントロールに似ていますが、ItemsRepeaterScrollViewItemContainerItemCollectionTransitionProvider の各コンポーネントを使用して構築されます。 これは、カスタム Layout または ItemCollectionTransitionProvider 実装をプラグインするための固有の機能を提供します。 もう 1 つの主な利点として、項目の選択を保持しながら、その場でレイアウトを切り替える機能があります。 内側の ScrollView コントロールもまた、プログラムによるスクロール中にアニメーションを制御する機能などの、ListView/GridViewScrollViewer コントロールでは使用できない機能を提供します。
    • 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 プロパティがこれらの型に追加されました。 メニューは、既定ではこれを使用してアクリルを使用します。
  • オブジェクトまたはスレッドのシャットダウン中の処理を改善するために、ClosedFrameworkClosedIsClosedDesktopAcrylicControllerMicaController に追加されました。
  • 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 つの新しいインターフェイス IWidgetProvider2IWidgetProviderAnalyticsIWidgetProviderErrors が追加されました。 IWidgetProvider2 を使用すると、プロバイダーは、ユーザーによって呼び出された [カスタマイズ] アクションに応答できます。これは、ファースト パーティ ウィジェットで使用可能なものと同じです。 IWidgetProviderAnalytics および IWidgetProviderErrors インターフェイスは、各ウィジェットのテレメトリを収集するためにプロバイダーによって使用されます。ウィジェットに関する分析およびエラー イベントは、対応するウィジェット プロバイダーに伝達されます。 新しい機能をサポートするための関連情報を伝達するために、WidgetCustomizationRequestedArgsWidgetAnalyticsInfoReportedArgsWidgetErrorInfoReportedArgs の各クラスが使用されます。

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 仕様と問題 497223506073 を参照してください。
  • デプロイ: Windows アプリ ランタイム を管理および修復するために、DeploymentRepairOptionsDeploymentManager の一部として使用できるようになりました。 詳細については、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> を使って、プロジェクトで自動初期化子を明示的に有効にすることができます。
  • バージョン情報 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 アプリで、MediaPlayerElementMediaTransportControls メディア再生コントロールを使ってオーディオとビデオを再生できます。 メディア コントロールの使い方とタイミングについては、「メディア プレイ ヤー」を参照してください。

WinUI 3 は WinUI 2.8 から更新され、最新のコントロール、スタイル、動作になりました。 これらの更新には、InfoBadge コントロールの追加、アクセシビリティとハイ コントラスト モードの機能強化、コントロール全体のバグ修正が含まれています。 詳細については、WinUI 2.7WinUI 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-toolTiphint-buttonStyle はビルド 19041 以降でのみサポートされています。 IsButtonStyleSupportedIsToolTipSupported を使うと、実行時にその機能を使用できるかどうか確認できます。
  • パッケージ化されていないアプリの XAML マークアップで MediaPlayerElement を使う場合、Source プロパティには ms-appx または ms-resource URI を設定できません。 代わりに、ファイル URI を使って Source を設定するか、コードから設定してください。

ウィンドウ化

Windows 10 のバージョン 1809 以降では、AppWindowTitleBar クラスを使ってタイトル バーの完全なカスタマイズが可能になりました。 AppWindowTitleBar.ExtendsContentIntoTitleBartrue に設定するとタイトル バー リージョンにコンテンツを拡張できます。また、SetDragRectangles を使うと、(他のカスタマイズ オプションに加えて) ドラッグ領域を定義できます。

AppWindowTitleBar.IsCustomizationSupported プロパティを使って AppWindowTitleBar API を呼び出すことができるかどうかを確認している場合、サポートされている Windows App SDK Windows 10 バージョン (1809 以降) では true が返されるようになりました。

既知の制限事項 (Windowing)

単純なタイトル バーのカスタマイズは、Windows 10 ではサポートされていません。 たとえば、BackgroundColorInactiveBackgroundColorForegroundColorInactiveForegroundColorIconShowOptions などです。 これらのプロパティを呼び出すと、メッセージなしで無視されます。 他のすべての AppWindowTitleBar API は、Windows 10 バージョン 1809 以降で機能します。 (特に) キャプション ボタンの色 API と、Height については、ExtendsContentIntoTitleBartrue に設定する必要があります。そうしないと、メッセージなしで無視されます。

アクセス制御

security.accesscontrol.hGetSecurityDescriptorForAppContainerNames 関数を導入し、パッケージ プロセスと一般的な 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 のバージョン要件」を参照してください。
  • 単一プロジェクトの MSIX でデプロイされない .NET アプリの場合:
    • ファイルが Content ItemGroup に 2 回以上追加されると、ビルド エラーが発生します。
      • 回避策: 重複するインクルードを削除するか、プロジェクト ファイルで EnableDefaultContentItems を false に設定します。

どちらのリグレッションも、次の安定版リリースで復元されます。

バージョン 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 にコピーされます。 アイコンの漏洩を防ぐには、開発者は次のリリースにアップグレードした後、間違ったパスでアプリ アイコンを手動で削除する必要があります。
  • ショートカットによる通知のアプリアイコンとアプリの表示名取得はサポートされていません。 しかし、今後のリリースでサポートする予定です。

展開

新機能:

既知の制限事項:

  • 自己完結型の展開は、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 は、非パッケージ アプリでは現在サポートされていません。 次の安定リリースでこれを修正することを目指しています。 いくつか例を示します。
  • 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 をサポートする場合は、希望するアーキテクチャ x86x64、または 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 ヘルパー関数を使用することです。

    1. プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
    2. #include <wil/cppwinrt_helpers.h>pch.h に追加します。
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h に追加します。
    4. ここで、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 環境変数が使用できなくなります。

影響を受けるリリース

対応策

コンピューターを良好な状態に戻すには、次の手順を実行します。

  1. レジストリ内の 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
    }
    
  2. Windows App SDK 1.0 プレビュー 1 またはプレビュー 2 を使用するすべてのアプリをアンインストールします (以下のスクリプトを参照してください)。

  3. バグが含まれているパッケージを含めて、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 になりました。これらのメソッドは常に成功するためです。
  • GetWindowIdFromWindowGetWindowFromWindowId では、C# importdll の呼び出しが不要になりました。 代わりに、Microsoft.UI.Win32Interop クラスで使用できる .NET ラッパー メソッドを使用してください。

重要な制限事項:

  • 現在、Windows App SDK には、UI フレームワーク コンテンツを AppWindow にアタッチするためのメソッドが用意されていません。HWND 相互運用アクセス メソッドを使用するように制限されています。
  • ウィンドウ タイトル バーのカスタマイズは、Windows 11 でのみ機能します。 タイトル バー カスタマイズ機能のサポートを確認するには、IsCustomizationSupported メソッドを使用します。 この機能を下位レベルでも導入する予定です。

詳細については、「アプリ ウィンドウの管理」を参照してください。

入力

新しい更新:

  • 高精度タッチパッド入力のサポートが改善されました。

重要な制限事項:

  • すべての PointerPoint 静的ファクトリ関数が削除されました。GetCurrentPointGetCurrentPointTransformedGetIntermediatePointsGetIntermediatePointsTransformed
  • Windows App SDK では、ポインター ID を使用した PointerPoint オブジェクトの取得はサポートされていません。 代わりに、PointerPoint メンバー関数 GetTransformedPoint を使用して、既存の PointerPoint オブジェクトの変換されたバージョンを取得できます。 中間点として、PointerEventArgs メンバー関数 GetIntermediatePointsGetTransformedIntermediatePoints を使用できます。 詳細については、ドキュメントを参照してください。

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 アプリは FileActivatedEventArgsLaunchActivatedEventArgs などの ActivatedEventArgs クラスを使用できるのに対して、Windows App SDK AppLifecycle 機能はクラスではなくインターフェイス (たとえば、IFileActivatedEventArgsILaunchActivatedEventArgs など) を使用する必要があります。
    • WinUI 3 アプリ: WinUI 3 の App.OnLaunched には Microsoft.UI.Xaml.LaunchActivatedEventArgs が与えられますが、プラットフォーム GetActivatedEventArgsWindows.ApplicationModel.IActivatedEventArgs を返し、WindowsAppSDK GetActivatedEventArgs はプラットフォーム 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 をサポートする場合は、希望するアーキテクチャ x86x64、または 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 ヘルパー関数を使用することです。

    1. プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
    2. #include <wil/cppwinrt_helpers.h>pch.h に追加します。
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h に追加します。
    4. ここで、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 内の通常の値と同じ) を参照していたため、削除されました。 代わりに PositionContactRect を使用してください。 ポインター予測は、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 ヘルパー関数を使用することです。

    1. プロジェクトに Microsoft.Windows.ImplementationLibrary NuGet パッケージへの参照を追加します。
    2. #include <wil/cppwinrt_helpers.h>pch.h に追加します。
    3. #include <winrt/Microsoft.UI.Dispatching.h>pch.h に追加します。
    4. ここで、co_await wil::resume_foreground(your_dispatcherqueue); を指定します。
  • Any CPU ビルド構成のサポートがない: Windows App SDK はネイティブ コードで記述されているため、Any CPU ビルド構成をサポートしていません。 Visual Studio の WinUI 3 テンプレートでは、アーキテクチャ固有のビルドのみが許可されます。 Any CPU をサポートする既存の .NET アプリケーションまたはコンポーネントに Windows App SDK を追加した場合、目的のアーキテクチャ (x86x64arm64) を指定する必要があります。

  • .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 ではサポートされない非パッケージ アプリ: これは、次のリリースで解決されます。