We are proud to announce that version 1.6 of the Windows App SDK is now available! Whether you’re looking for the incredible performance boost and footprint reduction of Native AOT support, enhancements for deploying your package, or quality of life improvements for controls like PipsPager and RatingControl, WinAppSDK 1.6 offers a raft of new features, performance boosts and structural changes that enable you to make your native Windows apps better than ever before.
The Windows App SDK provides a rich set of APIs and tools to help you build beautiful and fast Windows desktop apps, including any C++ Win32 or C# .NET app. You can harness the modern controls and polish of WinUI 3, which ships as part of the WinAppSDK, or if you have an existing app that uses Win32 such as WPF, you can take advantage of only the parts of the SDK that you need. The WinAppSDK also stays up to date with frequent and OS-independent releases so your app can always access the latest innovations.
↫ Duncan MacMichael at the Windows Blogs
There’s actually quite a few nice and welcome updates in version 1.6, most prominently the aforementioned Native AOT. This stands for native Ahead-Of-Time (AOT) compilation, and, as the name suggests, compiles your application ahead of time for the architecture it’s going to run on. This reduces the size of the application package and greatly improves the startup time. Another welcome improvement is that the embedded Edge WebView2 SDK is no longer hard-coded, but a NuGet reference, so developers can choose to use any version of the webview they want, preferably the newest version.
There’s a lot more in here, so if you’re a Windows developer trying to use the latest set of tools from Microsoft – this one’s for you.
It is very curious the way that Microsoft has started to use the term Win32 these days.
Win32 is the original C API for calling into Windows. As I understand it, ANY native Windows application is really still calling into the Win32 API somewhere. But if you just say “Win32 app”, I have always taken it to mean that you are talking about an application that calls directly into the Windows API natively.
In this post, the sentence “if you have an existing app that uses Win32 such as WPF” caught my eye. When WPF ( Windows Presentation Foundation ) was young, it was explicitly a .NET framework for creating Windows applications. It was the “modern” replacement for Windows Forms ( really truly just a thin layer on top of GDI+ and Win32). WPF introduced XAML and completely abstracted away the normal Windows API ( Win32 ). So, calling WPF out as a Win32 framework sounds very odd to me. And how is WPF different from WinUI in this respect? Am I incorrect that WinUI also ultimately called into Win32 just like WPF ( but totally hides all those details from you )?
Aslo, is MFC ( Microsoft Foundation Classes ) still considered the “current” way to create GUI apps for Windows in C++? I am never listening to people again when they whine about Microsoft churning their GUI tech every year. MFC was first introduced in 1992! In fact, has Windows really fully abandoned any of their approaches to desktop dev? I mean, Windows Forms is no longer the “current” method of creating GUI apps but it is still fully supported for new dev and that came out with the first release of .NET in 2002 and the GitHub was last updated just 4 hours ago!
https://github.com/dotnet/winforms
And WPF is active on GitHub too:
https://github.com/dotnet/wpf
I guess these days you are meant to use MAUI but MAUI leverages WinUI3 when targeting Windows.
https://github.com/dotnet/maui
If you are developing against WinUI3 directly, it is essentially the same API as UWP which was the “modern” or “metro” GUI from Windows 8.
Yes, its all very confusing to me. I don’t understand how MAUI and this windows App SDK are related.
MAUI is a cross-platform framework and API. However, if you run a MAUI app on Windows, it is really just a wrapper around WinUI 3. You are not writing to the WinUI 3 API but your application will use the WinUI 3 libraries ( that themselves call into Win32 I believe ) such that your MAUI app is a “native” app when run on Windows.
At least, that is my understanding.
There’s still no reason to want to use this rather than just the Win32 API.