Windows App SDK
{{Short description|Software development kit from Microsoft}}
{{Infobox software
| name = Windows App SDK
| screenshot = WinuiExample.svg
| other_names = Project Reunion
| developer = Microsoft
| released = 29 March 2021
| discontinued =
| latest release version = {{wikidata|property|preferred|references|edit|Q108871754|P348|P548=Q2804309}}
| latest release date = {{wikidata|qualifier|preferred|single|Q108871754|P348|P548=Q2804309|P577}}
| latest preview version = {{wikidata|property|preferred|references|edit|Q108871754|P348|P548=Q51930650}}
| latest preview date = {{wikidata|qualifier|preferred|single|Q108871754|P348|P548=Q51930650|P577}}
| programming language = C++
| operating system = Windows 11, Windows 10 version 1809 and later
| platform = x86-64, ARM64, IA-32
| genre = Application programming interface (API)
| license = MIT License
| website = {{Official URL}}
}}
Windows App SDK (formerly known as Project Reunion){{cite web |last=Ramel |first=David |date=2021-06-24 |df=mdy |title=Windows 11 Development: Open Ecosystem Store, Project Reunion Rebrand and More |url=https://visualstudiomagazine.com/articles/2021/06/24/windows-11.aspx |website=Visual Studio Magazine |access-date=2021-10-11}} is a software development kit (SDK) from Microsoft that provides a unified set of APIs and components that can be used to develop desktop applications for both Windows 11 and Windows 10 version 1809 and later. The purpose of this project is to offer a decoupled implementation of capabilities which were previously tightly-coupled to the UWP app model.{{Citation |title=Windows App SDK - Calling all Windows developers! |date=2023-05-25 |url=https://github.com/microsoft/WindowsAppSDK/blob/8316e009b73cfd6c91829bdd1f1c99f4af5b2f6e/docs/faq.md |access-date=2023-05-26 |publisher=Microsoft}} Windows App SDK allows native Win32 (USER32/GDI32) or .NET (WPF/WinForms) developers alike a path forward to enhance their apps with modern features.
It follows that Windows App SDK is not intended to replace the Windows SDK. By exposing a common application programming interface (API) primarily using the Windows Runtime (WinRT) through generated WinMD metadata, the tradeoffs which once characterized either app model are largely eliminated. NuGet packages for version 1.4 were released in August 2023 after approximately four months of development.{{Cite web |title=Microsoft.WindowsAppSDK 1.4.230822000 |url=https://nuget.org/packages/Microsoft.WindowsAppSDK/ |access-date=2023-09-11 |website=nuget.org |language=en}}
Features and components
= WinUI 3 =
Most of the investment{{Cite web |title=Release v1.3.0 · microsoft/WindowsAppSDK |url=https://github.com/microsoft/WindowsAppSDK/releases/tag/v1.3.0 |access-date=2023-05-26 |website=GitHub |language=en}} into the decoupled UI stack{{Cite web |last=Karl-Bridge-Microsoft |date=2023-03-13 |title=Windows UI Library (WinUI) - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/winui/ |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} has gone towards bug fixes, improvements to the debugging experience, and simplifying the window management capabilities made possible by switching from CoreWindow. An API abstracting USER32/GDI32 primitives known as AppWindow was introduced to expose a unified set of windowing capabilities{{cite web |url=https://github.com/microsoft/WindowsAppSDK/discussions/370 |title=Discussion #370: Announcement: Proposed approach for windowing in Project Reunion |department=microsoft/WindowsAppSDK |website=GitHub |access-date=2022-04-19}} and enable support for custom window controls.
= WebView2 =
A replacement for the UWP WebView control was announced early on.{{Cite web |last1=Blog |first1=Microsoft Edge |last2=Team |first2=Microsoft Edge |date=2020-10-19 |title=Announcing Microsoft Edge WebView2 General Availability |url=https://blogs.windows.com/msedgedev/2020/10/19/edge-webview2-general-availability/ |access-date=2023-05-26 |website=Microsoft Edge Blog |language=en-US}} This is because it was based on an unsupported browser engine.{{Cite web |last= |date=2021-02-10 |title=New Microsoft Edge to replace Microsoft Edge Legacy with April's Windows 10 Update Tuesday release |url=https://techcommunity.microsoft.com/t5/microsoft-365-blog/new-microsoft-edge-to-replace-microsoft-edge-legacy-with-april-s/ba-p/2114224 |access-date=2023-05-26 |website=TECHCOMMUNITY.MICROSOFT.COM |language=en}} A new Chromium-based control, named WebView2, was developed and can be used from WinUI as well as other supported app types.
= Packaging =
While MSIX is included in the Windows App SDK and considered to be the recommended application packaging format,{{Cite web |last=dianmsft |date=2021-12-30 |title=What is MSIX? - MSIX |url=https://learn.microsoft.com/en-us/windows/msix/overview |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}{{Cite web |last=stevewhims |date=2023-03-03 |title=MSIX framework packages and dynamic dependencies - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/framework-packages/framework-packages-overview |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} a design goal was to allow for unpackaged apps. These apps can be deployed as self-contained or framework-dependent. Support for dynamic loading of app dependencies is included for both packaged and unpackaged apps.{{Cite web |last=stevewhims |date=2023-04-19 |title=Use the Windows App SDK runtime for apps packaged with external location or unpackaged - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/use-windows-app-sdk-run-time |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
= Graphics =
DWriteCore is being developed as a decoupled and device-independent solution for high-quality text rendering.{{Cite web |last=stevewhims |date=2022-02-24 |title=DWriteCore (Windows App SDK) - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/dwritecore |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} Win2D has also been made available to WinUI 3 apps.{{Cite web |last=stevewhims |date=2023-05-25 |title=Win2D - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/develop/win2d/ |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
= Resource management =
MRT Core allows for management of app resources for purposes such as localization. It is a decoupled version of the resource management system from UWP.{{Cite web |last=hickeys |date=2023-03-13 |title=Manage resources MRT Core (Windows App SDK) - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/mrtcore/mrtcore-overview |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
= App lifecycle =
With the stable releases delivered after its initial launch, Windows App SDK now supports several app lifecycle features which previously required a considerable amount of effort for developers to implement in Win32 applications. These features include power management notifications, rich activation, multiple instances, and programmatic app restart.{{Cite web |last=hickeys |date=2023-01-31 |title=App lifecycle and system services - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/develop/app-lifecycle-and-system-services |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
= Notifications =
Support for push notifications was initially implemented as a limited-access, preview feature.{{Cite web |last=hickeys |date=2023-03-16 |title=Push notifications overview - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/notifications/push-notifications/ |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} However, the APIs for it have since been stabilized and push notifications can be delivered to app users. Official documentation states that access to the feature can be revoked by Microsoft at their discretion.{{Cite web |last=hickeys |date=2022-06-03 |title=Notifications design basics - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/toast-ux-guidance |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} Additionally, apps can now easily display local app notifications without the need to create an XML payload.{{Cite web |last=vaheeshta |date=2022-07-12 |title=App notifications overview - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/notifications/app-notifications/ |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
= Widgets =
Third-party integration with the Windows Widgets system in Windows 11 has been included as part of the stable release channel.{{Cite web |last=drewbatgit |date=2023-03-09 |title=Widget providers - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/develop/widgets/widget-providers |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} Developers can design custom widgets for their app using adaptive cards{{Cite web |last=drewbatgit |date=2022-11-10 |title=Create a widget template with the Adaptive Cards Designer - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/design/widgets/widgets-create-a-template |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}} and surface them on the widgets board.{{Cite web |last=drewbatgit |date=2023-03-09 |title=Windows Widgets - Windows apps |url=https://learn.microsoft.com/en-us/windows/apps/design/widgets/ |access-date=2023-05-26 |website=learn.microsoft.com |language=en-us}}
See also
References
{{Reflist}}
External links
{{Wikibooks|Windows Programming}}
- {{Official website}}
- {{GitHub|microsoft/WindowsAppSDK}}
- {{GitHub|microsoft/WindowsAppSDK-Samples}}
{{Microsoft development tools}}
{{Microsoft FOSS}}
{{DEFAULTSORT:Windows App SDK}}
Category:Free and open-source software
Category:Microsoft development tools
Category:Microsoft free software
Category:Software development kits