HACKER Q&A
📣 grumblingdev

What is the best way to build a desktop app in Windows in 2023?


I’m talking the most native look and feel for the Windows platform.

Is it XAML and C#?


  👤 slater Accepted Answer ✓
Electr..HEY...[gets beaten to a bloody pulp]

👤 mikewarot
Delphi is probably the best, but I can't afford it. Lazarus is pretty good, except for the documentation, which needs a huge refactoring effort.

You can put together small applications in minutes.


👤 fassssst
Without more details, this is the way to get the most native Windows 11 look and feel:

https://learn.microsoft.com/en-us/windows/apps/winui/winui3/

Disclosure: I work at Microsoft on a team that works on visual look and feel for Windows.


👤 hbcondo714
.NET Multi-platform App UI (MAUI) is for cross platform but certainly targets native apps on Windows:

https://dotnet.microsoft.com/en-us/apps/maui


👤 bmitc
The answer is: pick your poison. There is no best way. Microsoft would have you believe it is WinUI, but there is also WinForms, WPF, UDP, Xamarin Forms, .NET MAUI, Avalonia, Uno, and several other solutions.

Even the landing page for WinUI starts off by comparing the differences between two versions of it.

https://learn.microsoft.com/en-us/windows/apps/winui/


👤 edandersen
To make an app with the same "nativeness" as the "Settings" app, you need to use UWP, or WinUI 2.7+. But not 3.0+.

👤 turtlebits
Asking Microsoft, it looks to be either WPF or WinForms.

https://learn.microsoft.com/en-us/dotnet/desktop/?view=netde...


👤 fckmsft
You need to check whatever half-arsed framework "that will be universal and encompass everything" Microsoft is promoting this specific month, and then violently ignore it and use proven things like wxWidgets or WinForms instead.

(There is no native look and feel on Windows any more. Microsoft pissed on that concept a long time ago.)


👤 joeld42
I am using Avalonia. If I were doing windows only I might use MAUI or WPF or something but afaik they are pretty similar, and I want it to be cross platform on mac.

The interface of the app is C#, the core is in CPP (I am tempted to use Zig but haven't worked with it enough to commit to it yet).


👤 yumraj
Looks like MFC is still a thing.

👤 dylanzhangdev
[aardio](https://aardio.com/)

I have been using aardio to develop desktop software for more than 4 years. I have developed many software. It is designed specifically for Windows desktop.

- Based on the syntax of Lua and JS, if you have one of these 2 foundations, you can get started in 1 hour. - Comes with an IDE, developing, compiling, debugging, rich standard libraries and sample code. - Support WYSIWYG UI control drag-and-drop. - Supports WebView2 and native development mixed - Support the use of Python, Go, C#, etc., can be used as a glue language. - The size of the packaged file is very small - The IDE and tutorials, documentation, and IntelliSense are only available in Chinese, but by using translation, it shouldn't be too much of a problem. For experienced programmers, it is easy to understand.


👤 thesuperbigfrog
What does Microsoft use?

If Teams, Office, and VS Code are any indicators it is web-based technologies.


👤 johnea
Qt: Not only do you also get builds for Mac and linux, but everytime MS updates .NET the Qt framework supports these changes so you don't have to.

👤 dansiemens
Microsoft is using React Native for Windows [0] for their Office applications [1]. As a fan of RN this would be the first avenue I’d explore if I had to develop something for Windows.

[0] https://microsoft.github.io/react-native-windows/ [1] https://microsoft.github.io/react-native-windows/resources-s...


👤 yett
WinUI 3

👤 farseer
I will say it without fear: nothing beats electron in beauty and eye candy. You have the entire HTML5/CSS3 at your disposal.

👤 lukew3
Ignoring your question about most native look and feel, I'm curious why Electron is still being suggested when Tauri exists

👤 dmitrygr
MFC never went away. And you can target winNT all the way to win11

👤 Panqueca_do_mar
DotNet core using webview 2 and something like react for the frontend.

Or you can look into https://tauri.app/


👤 madduci
I will still place my bet for C++ combined with a third party UI Framework. I know that Qt has changed its license model, but it offers many capabilities and is battle-tested enough.

Otherwise another shot could be a Java/JavaFX application, possibility compiled natively or packaged with jpackage, so you deliver your own tailored JVM, without requiring the installation of a JRE on the user system.

Another way would be to embrace the Microsoft ecosystem with the Windows UI Frameworks and then use C# or C++


👤 deterministic
If you want a performant application use C++ and Win32. Yep I am serious.

👤 m_fayer
Blazor hybrid is very productive if you want to stick at least somewhat to the Microsoft world and retain the power and ecosystem of web-ui.

👤 melvinroest
If you're feeling adventurous, I'd try Pharo [0]. I was at the ESUG conference (the European Smalltalk conference) and it seems that when you combine:

* Bloc (UI framework)

* The stuff in their new presentation (will be online in a few months)

* Pharo

You could get pretty far.

For example, this game [1] has been packaged as a Win/Mac app [2].

[0] https://pharo.org

[1] https://github.com/Enzo-Demeulenaere/Takuzu

[2] https://github.com/tesonep/takuzu


👤 bags43
WPF with some external controls.

- Still supported on latest .NET

- Most feature rich and battle tested

- Good documentation

- You will learn XAML which can be later used once when WinUI 3.0 is more mature (at least another 5,6 years will be needed with their current development velocity)

PS.

XAML is a bit different but similiar enoguh between WPF and WinUI.

Of course it depends on what type of application.


👤 NoZebra120vClip
I'll tell you, PWAs were my "gateway drug". Once I realized that practically every app worth using was installable as PWA, I began to question why I would even need Windows anymore as an OS layer.

Since PWAs run in the browser of choice, they are definitely native, especially if you choose Edge, which is approaching dominance on the platform.

PWAs grant automatic cross-platform ability. I can install and run PWA in Windows, Android, ChromeOS, you name it.

Also it is super minimum hassle. Windows never bothers me about the Store, or signing, or updating any PWA; it's simply transparent.


👤 jeffrallen
[delayed]

👤 steve1977
I guess the variety of comments shows one thing: the answer to your question is, if it’s possible in any conceivable way - don’t!

👤 JohnDeHope
The answer to this question is: you have asked the wrong question.