Package desktop applications (Desktop Bridge)
Take your existing desktop application and add modern experiences for Windows 10 users. Then, achieve greater reach across international markets by distributing it through the Microsoft Store. You can monetize your application in much simpler ways by leveraging features built right into the store. Of course, you don't have to use the store. Feel free to use your existing channels.
When you create a package for your desktop application, your application will get an identity and with that identity, your desktop application has access to Windows Universal Platform (UWP) APIs. You can use them to light up modern and engaging experiences such as live tiles and notifications. Use simple conditional compilation and runtime checks to run UWP code only when your application runs on Windows 10.
Aside from the code that you use to light up Windows 10 experiences, your application remains unchanged and you can continue to distribute it to your existing Windows 7, Windows Vista, or Windows XP user base. On Windows 10, your application continues to run in full-trust user mode just like it’s doing today.
The ability to create a Windows app package for your desktop application (Otherwise known as the Desktop Bridge, was introduced in Windows 10, version 1607, and it can only be used in projects that target Windows 10 Anniversary Update (10.0; Build 14393) or a later release in Visual Studio.
Checkout this series of short videos published by the Microsoft Virtual Academy. These videos walk you through the entire process of bringing your desktop application to the Universal Windows Platform (UWP).
Here's some reasons to create a Windows App package for your desktop application:
✔️ Streamlined deployment. Apps and games that use the bridge have a great deployment experience. This experience ensures that users can confidently install an application and update it. If a user chooses to uninstall the app, it's removed completely with no trace left behind. This reduces time authoring setup experiences and keeping users up-to-date.
✔️ Automatic updates and licensing. Your application can participate in the Microsoft Store's built-in licensing and automatic update facilities. Automatic update is a highly reliable and efficient mechanism, because only the changed parts of files are downloaded.
✔️ Increased reach and simplified monetization. Choosing to distribute through the Microsoft Store expands your reach to millions of Windows 10 users, who can acquire apps, games and in-app purchases with local payment options.
✔️ Add UWP features. At your own pace, you can add UWP features to your app's package, like a XAML user-interface, live tile updates, UWP background tasks, app services, and many more.
✔️ Broadened use-cases across device. Using the bridge, you can gradually migrate your code to the Universal Windows Platform to reach every Windows 10 device, including phones, Xbox One and HoloLens.
To view a more complete list of benefits, see Desktop Bridge.
First, prepare your application by reviewing the article Prepare to package your desktop app, and then addressing any of the issues that apply to your application before you create a Windows app package for it. You might not have to make many changes to your application before you create the package. However, there are some situations that might require you to tweak your application before you create a package for it.
Here's some tools that you can use to create a Windows app package for your app.
Desktop App Converter
While the term "Converter" appears in the name of this tool, it doesn't actually convert your app. Your application remains unchanged. However, this tool generates a Windows app package for you. It can be very convenient in cases where your application makes lots of system modifications, or if you have any uncertainty about what your installer does.
The Desktop App Converter translates the actions of your installer to the virtual file and registry system that the packaged version of your application will use. The Desktop App Converter also does a few extra things for you. Here's a few of them.
✔️ Automatically register your preview handlers, thumbnail handlers, property handlers, firewall rules, URL flags.
✔️ Automatically registers file type mappings that enable users to group files by using the Kind column in File Explorer.
✔️ Registers your public COM servers.
✔️ Generates a certificate that you can use to run your app.
✔️ Validates your application against packaged desktop application and Microsoft Store requirements.
Another great reason to use the Desktop App Converter is if you maintain your application by using a different development environment other than Visual Studio. You can use the Desktop App Converter even if your application doesn't have an installer.
If you maintain your application by using Visual Studio, and your application doesn't have an installer or your installer doesn't perform too many complicated tasks, consider using Visual Studio instead.
Visual Studio makes it abundantly easy to create a package. You'll add a packaging project, reference your desktop project, and then press F5 to debug your app. No manual tweaks necessary. This new streamlined experience is a vast improvement over the experience that was available in the previous version of Visual Studio. Here's a few other things you can do with it.
✔️ Automatically generate visual assets.
✔️ Make changes to your manifest by using a visual designer.
✔️ Generate your package by using a wizard.
✔️ Easily assign an identity to your application from a name that you've already reserved in the Windows Dev Center dashboard.
Several popular third-party products and installers now support the ability to package a desktop application. You can use them to generate MSI installers or app packages with only a few clicks. While we don't produce documentation on how to use these tools, visit their websites to learn more.
Caphyon provides a free, GUI-based, desktop app packaging tool that helps you to generate a Windows app package for your application with only a few clicks. It can use any installer; even ones that run in silent mode, and performs a validation check to determine whether the application is suitable for packaging. The Desktop App Converter also integrates with Hyper-V and VMware. This means that you can use your own virtual machines, without having to download a matching Docker image that can be over 3GB in size.
You can use Advanced Installer to generate MSI and Windows app packages from existing projects. You can also use Advanced installer to import Windows app packages that you generate by using the Microsoft Desktop App Converter. Once imported, you can maintain them by using visual tools that are specifically designed for UWP apps.
Advanced Installer also provides an extension for Visual Studio 2017 and 2015 that can use to build and debug Desktop Bridge apps.
See this video for a quick overview.
Be sure to checkout the recently released Advanced Installer Express Edition.
Cloudhouse Compatibility Containers
For Enterprise customers who have line of business applications that are incompatible with Windows 10 and 10 S, Cloudhouse’s Compatibility Containers enable Windows XP and 7 apps to run on Windows 10 and then converts them to run on the Universal Windows Platform (UWP) for delivery through Microsoft Store for Business, or Microsoft InTune without changing the source code. Register for a Free Trial.
Cloudhouse provides an Auto Packager for packaging line of business applications into Compatibility Containers on the operating systems that the apps runs on today (For example: Windows XP), and then prepare it for conversion to UWP. The Container is then converted to the new Windows app package format by integrating it with Microsoft’s Desktop App Converter tool.
The Auto Packager uses install / capture and runtime analysis to create a Container for the application which includes the application’s files, registry, runtimes, dependencies, and the compatibility and redirection engine required to enable the application to run on Windows 10. The Container provides isolation for the application and its runtimes, so that that they do not affect or conflict with other applications running on the user’s device.
Find out more about how you can deliver business applications through the Microsoft Store for Business Read in our Release blog.
The FireGiant Appx extension lets you create Windows app packages and MSI packages simultaneously from the same WiX source code. Every time you build, you can target Windows 10 with a Windows app package and earlier versions of Windows with MSI.
The FireGiant Appx extension uses static analysis and intelligent emulation of your WiX projects to create Windows app packages without the disk space and runtime overhead of containers or virtual machines.
Because the FireGiant Appx extension doesn't convert your installer by running it, you can maintain your WiX installer without having to repeatedly convert it to Windows app packages. All your users on different versions of Windows get your latest improvements and you don't have to worry about MSI and Windows app packages getting out of sync.
Check out this video and see how in a couple lines of code FireGiant CEO Rob Mensching creates an Appx (Windows app package) version of the popular open-source 7-Zip compression tool and then how he improves both Windows application and MSI packages with changes in the same WiX source code.
InstallAware, with a track record of quickly supporting Microsoft's innovations, builds Windows app packages (Desktop Bridge), App-V (Application Virtualization), MSI (Windows Installer), and EXE (Native Code) packages from a single source.
InstallAware provides free InstallAware extensions for Visual Studio versions 2012-2017. You can use them to create Windows app packages with a single click directly from the Visual Studio toolbar.
You can also import any setup, even if you don't have the source code for that setup, by using PackageAware (snapshot-free setup captures), or the Database Import Wizard (for all MSI installers and MSM merge modules). You can use GUI tools to maintain and enhance your imports, visually or by scripting.
Advanced APPX creation options help you target Microsoft Store submissions, or produce signed Windows app package binaries for sideload distribution to end-users. You can even build WSA(Windows Server Applications) Installer packages that target deployments to Nano Server all from a single source, and with full support for command line automation, in addition to a GUI.
InstallAware also open sourced an APPX builder library, together with an example command line applet, under the GNU Affero GPL license. These are designed for use with open source platforms such as WiX.
InstallShield provides a single solution to develop MSI and EXE installers, create Universal Windows Platform (UWP) and Windows Server App (WSA) packages, and virtualize applications with minimal scripting, coding and rework.
Scan your InstallShield project in seconds to save hours of investigative work by automatically identifying potential compatibility issues between your application and UWP and WSA packages.
Prepare for the Microsoft Store and simplify your software’s installation experience on Windows 10 by building UWP app packages from your existing InstallShield projects. Build both Windows Installer and UWP App Packages to support all of your customers’ desired deployment scenarios. Support Nano Server and Windows Server 2016 deployments by building WSA packages from your existing InstallShield projects.
Develop your installation in modules for easier deployment and maintenance, and then merge the components and dependencies at build time into a single UWP app package for the Microsoft Store. For direct distribution outside the store, bundle your UWP App Packages and other dependencies together with a Suite/Advanced UI installer.
Learn more in this eBook.
PACE Suite is an application packaging tool that you can use to bring your desktop apps to the Universal Windows Platform.
With PACE Suite, you don't need to prepare special packaging environments or install additional Windows SDK components. PACE Suite can build Windows app packages independently in your standard packaging environment under Windows 10 or Windows Server 2016. Check out this illustrated example to learn how PACE Suite approaches repackaging an installer to a Windows app package.
Apart from creating Windows app packages, you can also use PACE Suite to create Windows Installer packages (MSI), patches (MSP), transforms (MST) and App-V packages. When it comes to MSI authoring, PACE Suite helps with managing upgrades, permission settings, custom actions, scripts and others. You can also publish your applications directly to System Center Configuration Manager.
To review all application packaging capabilities, see PACE Suite features.
Raynet's packaging solution, RayPack Studio, supports the creation of packages for desktop applications as one of several possible outcomes of efficient and easy-to-configure conversion and repackaging framework.
Existing virtual environments (VMware Workstation, Hyper-V) can be used to perform automated/bulk conversion without a lengthy environment setup. A component of the studio (RayQC Advanced) is able to make pre-conversion screening and compatibility tests to verify software that is eligible for conversion. Additionally, users can now perform comprehensive collision and compatibility checks with various Windows 10 editions including Anniversary and Creators updates.
Next to the creation of software packages for Windows 10 APPX/UWP format, RayPack Studio can also be used to create classic Windows Installer packages (MSI), patches (MSP), transforms (MST), and App-V packages. Furthermore, this solution comes with a set of software products and components for professional enterprise software packaging. In addition to software packaging and virtualization, RayPack Studio considers all packaging-related tasks: conflict and compatibility checks of software applications and packages (RayQC Advanced), software evaluation (RayEval), and quality assurance (RayQC).
Combined with RayFlow, Raynet´s Enterprise Workflow System, users can efficiently work on the software through the whole enterprise application lifecycle, from package ordering, through evaluation, analysis, packaging, quality assurance, user acceptance tests and deployment. All packages and formats can be stored and deployed directly into SCCM or other solutions. The entire application lifecycle process is tracked and managed by RayFlow. In addition, any order systems such as ServiceNow can be integrated. Raynet builds software packaging factories worldwide with its tools for service providers.
- Raynet: https://raynet.de/home
- RayPack Studio: https://raynet.de/Raynet-Products/RayPackStudio
- RayFlow: https://raynet.de/Raynet-Products/RayFlow
- RayEval: https://raynet.de/Raynet-Products/RayEval
- RayQC: https://raynet.de/Raynet-Products/RayQC
- RayQC Advanced: https://raynet.de/Raynet-Products/RayQCad
- Free Trial License: https://raynet.de/contact?init=license
As a final option, you can convert your application without using any of these tools. If you want that granular control over your conversion, you can create a manifest file, and then run the MakeAppx.exe tool to create your Windows app package.
If your application needs to integrate with the system (For example: establish firewall rules), describe those things in the package manifest of your application and the system will do the rest. For most of these tasks, you won't have to write any code at all. With a bit of XML in the manifest, you can do things like start a process when the user logs on, integrate your application into File Explorer, and add your application a list of print targets that appear in other apps.
Once you've packaged your app, you can light it up with features such as live tiles, and push notifications. Some of these capabilities can significantly improve the engagement level of your application and they cost you very little time to add. Some enhancements require a bit more code.
Some Windows 10 experiences (For example: a touch-enabled UI page) must run inside of a modern app container. In general, you should first determine whether you can add your experience by Enhancing your existing desktop application with UWP APIs. If you have to use a UWP component, to achieve the experience, then you can add a UWP project to your solution and use app services to communicate between your desktop application and the UWP component.
While there's no tool that can convert a desktop application to a UWP app, you can reuse a lot of your existing code, and that lowers the cost of building one. You can do that by moving as much business logic as you can into .NET Standard 2.0 libraries.
The .NET Standard 2.0 includes a massive increase in the number of .NET APIs along with a compatibility shim for your favorite NuGet packages and third party libraries.
Migrate your code to .NET Standard libraries, and then create a Universal Windows Platform (UWP) app to reach all Windows 10 devices.
To test your application in a realistic setting as you prepare for distribution, it's best to sign your application and then install it. See Test your app.
If you plan to publish your application to the Microsoft Store, make sure that your application operates correctly on devices that run Windows 10 in S mode. This is a store requirement. See Test your Windows app for Windows 10 in S mode.
To give your application the best chance of being published on the Microsoft Store or becoming Windows Certified, validate and test it locally before you submit it for certification.
If you're using the DAC to package your app, you can use the new
-Verify flag to validate your package against the packaged desktop application and Store requirements. See Package an app, sign the app, and prepare it for store submission.
If you're using Visual Studio, you can validate your application from the Create App Packages wizard. See Create an app package upload file.
To run the tool manually, see Windows App Certification Kit.
To review the list of tests that the Windows App Certification uses to validate your app, see Windows Desktop Bridge app tests.
You can distribute your application by publishing it the Microsoft Store or by sideloading it onto other systems.
Support and feedback
Find answers to your questions
Give feedback or make feature suggestions
In this section
|Prepare to package an app||Provides a list of items to review before you package your desktop app.|
|Package an app using the Desktop App Converter||Shows how to run Desktop App Converter.|
|Package a desktop application manually||Learn how to create an app package and manifest to by hand.|
|Package a desktop application using Visual Studio||Shows you how to package your desktop application by using Visual Studio.|
|Integrate your desktop application with Windows 10||Integrate your application with Windows 10 by using by describing tasks in the package manifest file of your packaging project.|
|Enhance your desktop application for Windows 10||Use UWP APIs to add modern experiences that light up for Windows 10 users.|
|UWP APIs available to a packaged desktop application||See what UWP APIs are available for your packaged desktop application to use.|
|Extend your desktop application with modern UWP components||Add advanced experiences that must run within a UWP app container. Connect your desktop application with the UWP process by using app services.|
|Run, debug, and test a packaged desktop application||Explains options for debugging your packaged app.|
|Distribute a packaged desktop application||See how you can distribute your converted application to users.|
|[Known Issues(desktop-to-uwp-known-issues.md)||Lists known issues with packaging desktop applications.|