UWP is one choice for creating apps that run on Windows 10 and Windows 11 devices, and can be combined with other platforms. UWP apps can make use of Win32 APIs and .NET classes (see API Sets for UWP apps, Dlls for UWP apps, and .NET for UWP apps).
UWP apps declare in their manifest the device capabilities they need such as access to the microphone, location, Webcam, USB devices, files, and so on. The user must acknowledge and authorize that access before the app is granted the capability.
Windows 10 introduced the Universal Windows Platform (UWP), which provides a common app platform on every device that runs Windows. The UWP core APIs are the same on all Windows devices. If your app only uses the core APIs, it will run on any Windows device no matter whether you are targeting a desktop PC, Xbox, Mixed-reality headset, and so on.
Extension SDKs let you call specialized APIs for different devices. For example, if your UWP app targets an IoT device, you can add the IoT extension SDK to your project to target features specific to IoT devices. For more information about adding extension SDKs, see the Extension SDKs section in Programming with extension SDKs.
You can write your app so that you expect it to run only on a particular type of device, and then limit its distribution from the Microsoft Store to just that type of device. Or, you can conditionally test for the presence of an API at runtime and adapt your app's behavior accordingly. For more information, see the Writing code section in Programming with extension SDKs.
UI elements respond to the size and DPI of the screen the app is running on by adjusting their layout and scale. UWP apps work well with multiple types of input such as keyboard, mouse, touch, pen, and game controllers. If you need to further tailor your UI to a specific screen size or device, new layout panels and tooling help you design UI that can adapt to the different devices and form factors that your app may run on.
Some aspects of your app's UI will automatically adapt across devices. Your app's user-experience design, however, may need to adapt depending on the device the app is running on. For example, a photo app could adapt its UI when running on a small, handheld device to ensure that usage is ideal for single-handed use. When a photo app is running on a desktop computer, the UI should adapt to take advantage of the additional screen space.
A unified app store makes your app available on Windows devices such as PC, tablet, Xbox, HoloLens, Surface Hub, and Internet of Things (IoT) devices. You can submit your app to the store and make it available to all types of devices, or only those you choose. You submit and manage all your apps for Windows devices in one place. Have a C++ desktop app that you want to modernize with UWP features and sell in the Microsoft store? That's okay, too.
UWP apps can be packaged with MSIX and distributed via the Microsoft Store, or in other ways. MSIX allows apps to be updated no matter how they are distributed, see Update non-Store published app packages from your code.
The Microsoft design system is named Fluent. The Fluent Design System is a set of UWP features combined with best practices for creating apps that perform beautifully on all types of Windows-powered devices. Fluent experiences adapt and feel natural on devices from tablets to laptops, from PCs to televisions, and on virtual reality devices. See The Fluent Design System for UWP apps for an introduction to Fluent Design.
Good design is the process of deciding how users will interact with your app, in addition to how it will look and function. User experience plays a huge part in determining how happy people will be with your app, so don't skimp on this step. Design basics introduces you to designing a Universal Windows app. See the device primer to help you think through the interaction experience of using your app on all the different form factors you want to target.
Design your workflow using Navigation design basics for UWP apps to accommodate mobile, small-screen, and large-screen devices. Lay out your user interface to respond to different screen sizes and resolutions.
Consider how you'll accommodate multiple kinds of input. See the Guidelines for interactions to learn how users can interact with your app by using Cortana, Speech, Touch interactions, the Touch keyboard and more. Or, see the Guidelines for text and text input for more traditional interaction experiences.
Partner Center lets you manage and submit all of your apps for Windows devices in one place. See Publish Windows apps and games to learn how to submit your apps for publication in the Microsoft Store.
New features simplify processes while giving you more control. You'll also find detailed analytic reports combined payout details, ways to promote your app and engage with your customers, and much more.
If you're building a Universal Windows Platform (UWP) app, then you can get a lot of mileage and convenience out of treating the terms "Universal Windows Platform (UWP)" and "Windows Runtime (WinRT)" as more or less synonymous. But it is possible to look under the covers of the technology, and determine just what the difference is between those ideas. If you're curious about that, then this last section is for you.
The Windows Runtime, and WinRT APIs, are an evolution of Windows APIs. Originally, Windows was programmed via flat, C-style Win32 APIs. To those were added COM APIs (DirectX being a prominent example). Windows Forms, WPF, .NET, and managed languages brought their own way of writing Windows apps, and their own flavor of API technology. The Windows Runtime is, under the covers, the next stage of COM. At the actual application binary interface (ABI) layer, its roots in COM become visible. But the Windows Runtime was designed to be callable from a great range of different programming languages. And callable in a way that's very natural to each of those languages. To this end, access to the Windows Runtime is made available via what are known as language projections. There is a Windows Runtime language projection into C#, into Visual Basic, into standard C++, into JavaScript, and so on. Furthermore, once packaged appropriately (see Desktop Bridge), you can call WinRT APIs from an app built in one of a great range of application models: Win32, .NET, WinForms, and WPF.
And, of course, you can call WinRT APIs from your UWP app. UWP is an application model built on top of the Windows Runtime. Technically, the UWP application model is based on CoreApplication, although that detail may be hidden from you, depending on your choice of programming language. As this topic has explained, from a value proposition point of view, the UWP lends itself to writing a single binary that can, should you choose, be published to the Microsoft Store and run on any one of a great range of device form factors. The device reach of your UWP app depends on the subset of Windows Runtime APIs that you limit your app to calling, or that you call conditionally.
Hopefully, this section has been successful in describing the difference between the technology underlying Windows Runtime APIs, and the mechanism and business value of the Universal Windows Platform.
When we are trying this under the administrator, which is also excluded from using FSLogix profiling, it appears to keep the app installed, even after signing off and logging back in. This isn't a solution however, since the app is then only installed for the administrator.
I am making the assumption that by having FSLogix enabled the filter driver is kicking in and 'potentially' invoking some future MSIX AppAttach functionality and making the C:\program files\windowsapps folder non-persistent.
He acknowledged that this is an issue the FsLogix Team is aware of. Currently it is not possible to run Modern Apps along with FsLogix, and this is a by design behaviour as both technologies are working as expected, the problem is the compatibility between them.
This is caused by the way both technologies work. Basically Modern apps have part of the info in the base OS and part of the info in the user profile, and FsLogix seamlessly redirects user profiles. This causes problems with persistency.
+1 to the list of folks observing this problem.
This is really bad for anyone using Windows 10 Multi-Session Pooled deployments where the same profile container is used with updated host pools. The user expects to get an updated experience with the newly updated host pool an this is true for Win32 apps. But, the "Modern" store apps are whacked.
Doesn't seem so "modern".... A fix would have to entail updating the user profile hive with the new version info. That or perhaps breaking away from writing version specific info in the first place which seems like a better path.
@msft? Are you reading these posts?
Rough waters for the Flagship Azure WVD!!!
This happens because you're using Windows 10 Enterprise multi-session with a profile management solution like FSLogix. Your admin or profile solution configured your system to delete user profiles when users sign out. This configuration means that when your system deletes your user profile after you sign out, it also removes any apps you installed during your session. If you want to keep the apps you installed, you'll need to ask your admin to provision these apps for all users in your Windows Virtual Desktop environment.
Most virtualized environments are configured by default to prevent users from installing additional apps to their profiles. If you want to make sure an app doesn't disappear when your user signs out of Windows Virtual Desktop, you have to provision that app for all user profiles in your environment. For more information about provisioning apps, check out these resources:
@andyjia
I feel like Microsoft doesn't understand the problem statement. The use of FSLogix is very similar to a UPD scenario where the user profile is stored on a central storage location so that the profile remains available to sessions created on different hosts.
It's commonplace for the local profile to be deleted post logoff, in fact many other problems can manifest if this isnt done.
Also, it seems like Microsoft is completely ignoring the fact that these same apps work fine for new users. On that thought, you can delete an old profile container (FSLogix reference), have that user logon and these apps now work again as expected.
The problem is that the application references in the profile (stored on a network location in a .VHD(x) and mounted ad logon) are not getting updated with the new application version information, effectively creating broken app references.
This configuration is pretty much the standard configuration for organizations that deploy Azure WVD and a Pooled Session Host config.
These references to FSLogix profile containers being the problem are counter productive to one of the hottest Azure solutions these days. We're following Microsoft guidance on the deployment! Is Microsoft suggesting that we no longer use FSLogix? What would happen if this same problem could be reproduced with a UPD?
Why cant Microsoft not admit that there's a significant problem with the way that these applications (MS Store Apps) get updated in an existing profile? That is the root of this problem, not FSLogix!