Overview

One of the big achievements of the first iteration of the Windows operating system was the ability to easily install applications on a desktop computer. By allowing non-technical consumers to install applications, Microsoft helped set in motion an era of consumer software development that still powers so much of our lives today.


The story behind the Windows application installation and deployment has been evolving ever since. One could characterize the rough and tumble marriage between Windows and applications as a struggle between ease of use (for the end user) on one hand, and unsustainable complexity of the underlying technologies and management practices on the other.


From the development of basic installers, to the MSI framework, and then application virtualization and containers, Windows has responded to the rising tide of problems attributed to application deployment and management. The most recent chapter in the story of application deployment, as already mentioned, is the MSIX application package format (“MSIX”).


One of the great improvements of MSIX is that the software installation process is almost entirely isolated from the device state, which significantly reduces the number of dependencies as well as the unintended consequences experienced with older installers.


According to Microsoft, MSIX delivers an impressive 99% installation success rate, making it one of the most predictable ways to deploy applications in modern environments.


The increased installation success rate and predictability of MSIX comes with the added complexity of properly designing your unique MSIX deployment package. Microsoft has invested heavily in the technology to make sure it is suitable for a wide range of use cases, and as a result, there are a lot customization options you need to be familiar with.


Fortunately, for those of you that are new to MSIX, the options can be highly managed, whereas for those of you with more experience, you have access to power user features through more hands-on methods.


MSIX packages support not only installation and uninstallation, but also additional features:

  • Support upgrade/downgrade scenarios
  • Support for Add-on packages (Modification packages containing application configuration or plug-in modules).
  • Support for referencing required external packages, such as framework or vc library packages.
  • Support for referencing needed external drivers that can be triggered for installation by installing this package.

MSIX application package installation implementation support is built directly into the operating system, however we may use different methods to achieve package distribution and installation depending upon the customer requirements:


MSIX Deployment
MSIX Deployment

While the core of the Windows Operating System includes system level components that ultimately are responsible for installing the package, the OS also comes with many different built-in utilities and tools that are used during deployment.


Different approaches to deploy MSIX packages will use different combinations of these components and utilities, and the previous diagram attempts to show the most common scenarios.


Some of these scenarios use new file types that we have not previously discussed, so before we start covering the deployment scenarios, we should discuss these file types.