- Build desktop apps for Windows PCs
- Platforms for desktop apps
- Future roadmap
- Update existing desktop apps for Windows 10
- Create new desktop apps
- What is a Windows app? What is a desktop application? How are they different?
- What do apps and programs have in common? They are software!
- What are programs, desktop applications or desktop apps?
- What are apps, Windows universal (UWP) apps or Microsoft Store apps?
- What are UWP or Windows universal apps?
- The story with Microsoft Store apps gets complicated
- Which types of apps do you prefer using: desktop apps or apps? 🙂
- Modernize your desktop apps
- Windows UI Library
- MSIX packages
- .NET Core 3
- Windows Runtime APIs
- Host WinRT XAML controls (XAML Islands)
- Use the Visual layer in desktop apps
- Additional features available to apps with package identity
- WinRT XAML controls optimized for desktop apps
- Other technologies for modern desktop apps
- Microsoft Graph
- Adaptive Cards
Build desktop apps for Windows PCs
This article provides the info you need to get started building desktop apps for Windows or updating existing desktop apps to adopt the latest experiences in Windows 10.
Platforms for desktop apps
There are four main platforms for building desktop apps for Windows PCs. Each platform provides an app model that defines the lifecycle of the app, a complete UI framework and set of UI controls that let you create desktop apps like Word, Excel, and Photoshop, and access to a comprehensive set of managed or native APIs for using Windows features.
For an in-depth comparison of these platforms along with additional resources for each platform, see Choose your app platform.
Platform | Description | Docs and resources | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Universal Windows Platform (UWP) |
Article | Description |
---|---|
Modernize desktop apps | Describes the latest Windows 10 and UWP development features you can use in any desktop app, including WPF, Windows Forms, and C++ Win32 apps. |
Tutorial: Modernize a WPF app | Follow step-by-step instructions to modernize an existing WPF line-of-business sample app by adding UWP Ink and calendar controls to the app and packaging it in an MSIX package. |
Create new desktop apps
If you are creating a new desktop app for Windows, here are some resources to help get you started.
What is a Windows app? What is a desktop application? How are they different?
Before Windows 8 and Windows 10, you heard the term apps when people were referring to smartphones and tablets with Android, and iPhones and iPads, but not traditional Windows PCs. Now we have all kinds of apps for Windows. What is a Microsoft Store app? What is a Windows universal app? What about a desktop app? How are they different from traditional desktop programs? Read on and we are going to help you understand the differences between all these terms and concepts:
What do apps and programs have in common? They are software!
If you look at the big picture, apps, programs, desktop applications or desktop apps, are similar: software that instructs the computer or device they are running on, to do what their programmer(s) designed them to do. They also tell that computer or device how to do what it is supposed to do.
What are programs, desktop applications or desktop apps?
When referring to Windows 10, IT pros and tech publications often use the terms programs, applications, and desktop apps interchangeably. That is because they are the same thing: the traditional Windows applications that you install and use with the mouse and keyboard, just as it has been done since the first versions of Windows. In Windows, the list of installed desktop apps is found in the Control Panel. Open the Control Panel, and go to “Programs ->Programs and Features” or the old Add or remove programs window.
Here are the most important characteristics of programs, desktop applications or desktop apps:
- Desktop apps tend to have multiple features and can perform multiple tasks. Sometimes even a large set of tasks.
- They work well only with mouse and keyboard input and less well with touch input.
- In Windows 10 and Windows 8.1, desktop apps run with limited permissions but can be given administrative permissions by the user. Some applications, like antivirus programs, cannot run correctly without having administrative permissions. When given administrative permissions, programs can alter the operating system.
- Programs can run in multiple instances in parallel. For example, you can open the same desktop app two or three times, or as many times as you need, and work with all instances in parallel. On a multi-display setup, you can display a desktop app on any of your monitors and all of them at the same time, if you start multiple instances of the same desktop application.
- Applications can be used on any version of Windows: Windows 10, Windows 8.1, or Windows 7. However, some may not be compatible with older versions of Windows, depending on how they were programmed.
- They may install additional Windows services that give them access to different system resources and perform more complex tasks for the benefit of the user. VPN applications and antivirus programs are the most common examples of desktop apps that install Windows services.
- During their installation, applications can install bloatware that you do not want, depending on whether their developer(s) wanted this or not, to further monetize them.
- Desktop applications can contain any content. They are not curated by Microsoft unless they are distributed through the Microsoft Store.
- Programs can be distributed as directed by their developer, including through the Microsoft Store. Also, they can be installed from any source: websites, installation discs, USB flash drives, and other installation media.
- Desktop applications are always listed in “Control Panel -> Programs -> Programs and Features” and can also be removed from this location.
- Programs can be manually updated by the user or automatically, via specific update services created by their developer or through third-party updating apps or services.
- Updates to desktop apps may not always be free. Their developer may charge users for updating the application to the latest version.
- When you buy a program, the money goes straight to the developer(s). However, if it is distributed through the Microsoft Store, Microsoft gets a commission from your purchase, and the rest goes to its developer(s).
- Desktop applications can have any licensing model: from proprietary models to free and open-source licenses.
- They do not have to meet any specific requirements from Microsoft unless they are distributed through the Microsoft Store. The only requirements they have to meet are those created by their developer(s).
- Programs work on systems with Intel and AMD processors using the x86 system architecture. They cannot work on mobile ARM processors, like those used in smartphones, unless some form of virtualization is used.
What are apps, Windows universal (UWP) apps or Microsoft Store apps?
When you hear about Windows apps, without the word desktop being mentioned, we are talking about apps that are distributed through the Microsoft Store. They tend to be less complex software than desktop apps and programs.
Here are the most essential characteristics of Windows apps:
- Tend to have a limited number of features. Many of them perform just a single task or a few complementary tasks.
- They are designed to work with multiple input devices: touchscreens, digital pens, mouse and keyboard, etc.
- Apps can be run only in one instance at a time, on one screen at a given time. On a multi-display setup, you can display an app on only one of your monitors.
- They always run with limited permissions and can never receive administrative permissions from the user. This means that they cannot alter the operating system and other apps.
- Apps can run only in Windows 10 and Windows 8.1. They cannot be used in older versions of Windows.
- Windows apps cannot install additional Windows services.
- Apps from the Microsoft Store cannot install bloatware. They would not get approved for distribution by Microsoft.
- Adult content is forbidden in apps for Windows that are distributed through the Microsoft Store.
- Windows apps are downloaded and installed from the Microsoft Store. It is their only official method of distribution. However, developers and power users can sideload apps from other sources, just like on Android.
- Apps are not listed in “Control Panel -> Programs -> Programs and Features.” They can be removed from the Start Menu (in Windows 10) or the Start screen (in Windows 8.1), the Microsoft Store or the Settings app. You can learn more about this subject, here: 9 ways to remove desktop programs and modern apps in Windows.
- They are automatically updated through the Microsoft Store.
- Once an app is purchased and installed, updates are always free for all its users.
- When you buy an app from the Microsoft Store, Microsoft gets a commission from your purchase, and the rest goes to its developer(s).
- Apps must use a specific licensing model, created by Microsoft. More details can be found here: App Developer Agreement.
- They must meet specific requirements from Microsoft. Otherwise, they cannot be distributed through the Microsoft Store. More details in the Windows App Certification Kit.
- Apps can work on both ARM and x86 system architecture and processors, making them more flexible for use on multiple hardware platforms.
What are UWP or Windows universal apps?
Universal Windows apps or UWP (Universal Windows Platform) apps are the same as the other apps we mentioned in the previous section, but with one difference: they are designed to work the same on multiple devices with different form factors. They look and work the same on tablets with Windows 10, laptops and desktop computers with Windows 10, Xbox One consoles and smartphones with Windows 10 Mobile. You can learn more, here: What are Universal Windows Platform (UWP) apps?.
The story with Microsoft Store apps gets complicated
In the era of Windows 8, apps or Windows Store apps were the same things. The difference was only in the way you chose to name them. In Windows 10, the Microsoft Store accepts both apps and desktop apps. Therefore, things get confusing. For example, you have the Evernote touch app in the Windows Store for Windows 8.1 and the Evernote desktop app in the Microsoft Store for Windows 10.
Another example: you have the OneDrive app in the Microsoft Store and the OneDrive for Windows, the desktop client. While they both offer access to the same cloud storage service, the way they look, and their features are different.
To simplify things, here is one rule to remember: if the app that you use is distributed through the Microsoft Store, and it is optimized for devices with touchscreens, then its most suitable name is “app.” If an “app” is not optimized for devices with touchscreens, but laptops and PCs with a mouse and keyboard, its most suitable name is “desktop app.” Simple enough?
Which types of apps do you prefer using: desktop apps or apps? 🙂
Now you know the differences between all the types of apps and programs for Windows. Hopefully, we have done a good job at clarifying your questions and making things more understandable. Before you close this article, let us know which apps you use most often and what are they: apps or desktop apps?
Modernize your desktop apps
Windows 10 and the Universal Windows Platform (UWP) offer many features you can use to deliver a modern experience in your desktop apps. Most of these features are available as modular components that you can adopt in your desktop apps at your own pace without having to rewrite your application for a different platform. You can enhance your existing desktop apps by choosing which parts of Windows 10 and UWP to adopt.
This article describes the Windows 10 and UWP features that you can use in your desktop apps today. For a tutorial that demonstrates how to modernize an existing app to use many of the features described in this article, see the Modernize a WPF app tutorial.
Do you need assistance migrating desktop apps to Windows 10? The Desktop App Assure service provides direct, no-cost support to developers who are porting their apps to Windows 10. This program is available to all ISVs and eligible enterprises. For more details on eligibility and about the program itself, visit /fasttrack/win-10-app-assure-assistance-offered. To get started now, submit your request.
Windows UI Library
The Windows UI Library is a set of NuGet packages that provide controls and other user interface elements for Windows 10 apps. WinUI started as a toolkit that provided new and updated versions of WinRT XAML controls for UWP apps that target down-level versions of Windows 10. WinUI has grown in scope, and is now the modern native user interface (UI) platform for Windows 10 apps across UWP, .NET, and native Win32.
You can use WinUI in the following ways in desktop apps:
- You can update existing WPF, Windows Forms, and C++/Win32 apps with XAML Islands and host WinUI 2.x controls.
- Use WinUI 3 to create managed C#/.NET 5 and native C++/Win32 desktop apps with an entirely WinUI-based user interface.
MSIX packages
MSIX is a modern Windows app package format that provides a universal packaging experience for all Windows apps, including UWP, WPF, Windows Forms and Win32 apps. MSIX brings together the best aspects of MSI, .appx, App-V and ClickOnce installation technologies to provide a modern and reliable packaging experience.
Packaging your desktop Windows apps in MSIX packages gets you access to a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models.
For more information, see Package desktop applications in the MSIX documentation.
.NET Core 3
.NET Core 3 is the latest major release of .NET Core. The highlight of this release is support for Windows desktop apps, including Windows Forms and WPF apps. You can run new and existing Windows desktop apps on .NET Core 3 and enjoy all the benefits that .NET Core has to offer. WinRT XAML controls that are hosted in XAML Islands can also be used in Windows Forms and WPF apps that target .NET Core 3.
Windows Runtime APIs
You can call many Windows Runtime APIs directly in your WPF, Windows Forms, or C++ Win32 desktop app to integrate modern experiences that light up for Windows 10 users. For example, you can call Windows Runtime APIs to add toast notifications to your desktop app.
Host WinRT XAML controls (XAML Islands)
Starting with the Windows 10, version 1903, you can add UWP XAML controls directly to any UI element in a WPF, Windows Forms, or C++ Win32 app that is associated with a window handle (HWND). This means that you can fully integrate the latest UWP features such as Windows Ink and controls that support the Fluent Design System into windows and other display surfaces in your desktop apps. This developer scenario is sometimes called XAML islands.
Use the Visual layer in desktop apps
You can now use Windows Runtime APIs in non-UWP desktop apps to enhance the look, feel, and functionality of your WPF, Windows Forms, and C++ Win32 apps, and take advantage of the latest Windows 10 UI features that are only available via UWP. This is useful when you need to create custom experiences that go beyond the built-in WinRT XAML controls you can host by using XAML Islands.
Additional features available to apps with package identity
Some modern Windows 10 experiences are available only in desktop apps that have package identity. These features include certain Windows Runtime APIs, package extensions, and UWP components. For more information, see Features that require package identity.
There are several ways to grant identity to a desktop app:
- Package it in an MSIX package. MSIX is a modern app package format that provides a universal packaging experience for all Windows apps, WPF, Windows Forms and Win32 apps. It provides a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models. For more information, see Package desktop applications in the MSIX documentation.
- If you are unable to adopt MSIX packaging for deploying your desktop app, starting in Windows 10, version 2004, you can grant package identity by creating a sparse MSIX package that contains only a package manifest. For more information, see Grant identity to non-packaged desktop apps.
WinRT XAML controls optimized for desktop apps
Whether you’re building a UWP app that exclusively targets the desktop device family or you want to use WinRT XAML controls in a WPF, Windows Forms, or C++ Win32 desktop app, the following new and updated WinRT XAML controls are designed to offer desktop-optimized experiences with the Fluent Design System. These controls were introduced in Windows 10, version 1809 (the October 2018 Update, or version 10.0.17763).
Control | Description |
---|---|
MenuBar | Provides a quick and simple way to expose a set of commands for apps that might need more organization or grouping than a CommandBar allows. |
DropDownButton | Shows a chevron as a visual indicator that it has an attached flyout that contains more options. |
SplitButton | Provides a button has two parts that can be invoked separately. One part behaves like a standard button and invokes an immediate action. The other part invokes a flyout that contains additional options that the user can choose from. |
ToggleSplitButton | Provides a button has two parts that can be invoked separately. One part behaves like a toggle button that can be on or off. The other part invokes a flyout that contains additional options that the user can choose from. |
CommandBarFlyout | Lets you show common user tasks in the context of an item on your UI canvas. |
ComboBox | You can now make a combo box editable so the user can enter values that aren’t listed in the control. |
TreeView | You can now configure a tree view to enable data binding, item templates, and drag and drop. |
DataGridView | Provides a flexible way to display a collection of data in rows and columns. This control is available in the Windows Community Toolkit. |
Other technologies for modern desktop apps
Microsoft Graph
Microsoft Graph is a collection of APIs you can use to build apps for organizations and consumers that interact with the data of millions of users. Microsoft Graph exposes REST APIs and client libraries to access data on the following:
- Azure Active Directory
- Microsoft 365 Office apps: SharePoint, OneDrive, Outlook/Exchange, Microsoft Teams, OneNote, Planner, and Excel
- Enterprise Mobility and Security services: Identity Manager, Intune, Advanced Threat Analytics, and Advanced Threat Protection.
- Windows 10 services: activities and devices
For more information, see the Microsoft Graph docs.
Adaptive Cards
Adaptive Cards is an open, cross-platform framework that you can use to exchange card-based UI content in a common and consistent way across devices and platforms.
For more information, see the Adaptive Cards docs.