MSIX Modification Packages: Deploying custom application configurations.
What is MSIX Modification Package?
MSIX Modification Package is a type of MSIX package format introduced by Microsoft with the goal of decoupling customizations from the main application. Launched with the release of their MSIX packaging format, the MSIX Modification Package is an MSIX package meant to store the customizations of the application.
Although both MSIX and MSIX Modification Package had been initially supported only on Windows 10 1809 or higher, Microsoft later started to provide support for MSIX on Windows 10 1709 and 1803, but that is applicable only for MSIX - whilst MSIX Modification Package support remained the same.
Make sure to use Windows 10 1809 or higher if you want to take advantage of the MSIX Modification Package. You can find more details on MSIX supported platforms here.
How does MSIX Modification Package work?
There are a few advantages to using the MSIX Modification Package but also some things to take into account.
One of the nice perks of decoupling the customization from the main application is that you will have two separate packages with no explicit relationship set between them. And, as it is a separate package, you will not have to recreate the MSIX Modification Package for the customizations each time there is a new update of the main application – obviously, as long as the customizations stored in the MSIX Modification Package are still applicable.
Isn’t that cool?
And there's more! Not only do you not need to recreate the MSIX Modification Package, but there is no need to remove and reinstall it when a new update of the main application comes in. The customization stored in the MSIX Modification Package will apply successfully to the new MSIX package for the main application once the new MSIX package gets installed.
However, there's a small catch. The MSIX Modification Package doesn't contain a full application thus it can't be installed on its own. The MSIX for the main application is required to be installed on the device prior to the MSIX Modification Package installation. If you mix-up the steps, you will be presented with an error like the one shown below:
When an MSIX Modification Package is installed, its content will overlay on top of the MSIX resources in a way that it will look like one application to the user.
The overlay does not work for executables or if the files are not placed in the VFS folder.
When it comes to uninstalling, it can be removed at any time without affecting the functionality of the main application.
Is the MSIX Modification Package the new MST?
If you are familiar with Windows Installer technology, then you know that, same as the MSIX Modification Packages, Transform files (MSTs) are meant to store the customizations of an MSI package. But that is as far as the similarities go for them.
MST files can be applied to the base MSI only at the time of installation and only through the same msiexec command .
For a broader perspective, let’s compare MSIX Modification Packages with Windows Installer Patches (MSPs). Although an MSP is applied to the MSI in the same way that an MSIX Modification Package is applied to the MSIX - it cannot be installed on its own and it can be applied at any time (at installation time or later). MSPs are meant to store other resources (bug fixes, security updates, and hotfixes), but not customizations.
In summary, MSIX Modification Package is similar to:
- MST because they both are meant to store customizations.
- MSP because they apply to MSI, and MSIX respectively, in the same way.
Modification packages should not be used to deploy an update that contains only the changed binaries for an existing MSIX package (as we did with MSPs so far). For this scenario just create a new full MSIX and the OS will automatically download only the changed resources, this is one of the core features of an MSIX package.
Deep dive into the MSIX manifest file
If you compare the manifest files of MSIX and MSIX Modification Package, the first thing you will notice is that Identity attributes could have different values.
Going forward, there is a MainPackageDependency entry which is included within the Dependencies section of the MSIX Modification Package manifest file, but not in the MSIX manifest file.
This comes with two attributes:
- Name – it must match the identity Name of the main MSIX application.
- Publisher – does not have to match the identity Publisher of the main MSIX application and could be missing if the publisher is the same.
Moreover, in the light of the new MSIX features added starting with Windows 10 1903, the manifest file of the MSIX Modification Package must have the ModificationPackage entry set to “true” within the Properties section.
Also, since the MSIX Modification Package does not contain a full application, it does not have an entry point. And, in turn, there is no Application entry within the manifest file of the MSIX Modification Package.
Create an MSIX Modification Package using Advanced Installer
Let’s say we have an executable file that reads the content of a .config file placed next to it and displays the outcome on the screen.
Our example application has been packaged as MSIX, and both the executable and the .config files were included within the MSIX package.
Now, we want to replace the .config file with a new one using an MSIX Modification Package, so that our executable will read the content of the new text file at runtime.
Non-greyed-out files are the ones that are included in the MSIX Modification Package.
For step-by-step instructions on how to create an MSIX Modification Package, you can watch our video tutorial Creating MSIX Modification Packages
Let’s take the MSIX Modification Package created with the new config file included within and try to install that on a device where the main application MSIX package is installed. App Installer will prompt a message to let you know that it will modify the base MSIX package.
Once the MSIX Modification Package is installed, if we launch our application, the executable will now read the content of the new .config file included within the MSIX Modification Package.
That was exactly what we wanted to achieve through our MSIX Modification Package.
Now, if you go to “App Settings” for the MSIX Package, you should find the MSIX Modification Package listed under the “App add-ons & downloadable content” section.
Or you can achieve the same output by using Get-AppXPackage PowerShell cmdlet
Additionally, you can get a list of all installed MSIX Modification Packages using the following PowerShell cmdlet
Get-AppPackage -PackageTypeFilter Optional
On the other hand, you can also notice that the main MSIX and the MSIX Modification Package are installed in separate folders under “C:\Program Files\WindowsApp”
Be aware that C:\Program Files\WindowsApp folder is read-only and system protected.
For debugging, you can break into the MSIX container using Invoke-CommandInDesktopPackage PowerShell cmdlet.
Alternatively, you can work with Hover - our free and easy to use tool which allows you to run natively installed applications inside an MSIX container.
Microsoft did a great job here, and the MSIX Modification Package is an excellent opportunity for enterprises to handle the customizations of each of their MSIX Packages separately.
What makes it so great is that these customizations are now decoupled from the main application, which saves a lot of time and effort for IT professionals when packaging and deploying applications. Also resulting in lower costs for the organizations.