MSI vs MSIX: Practical Side-by-Side Comparison
In 2018, MSIX was announced by Microsoft as the new universal package format for Windows 10 apps with the later support on desktop, mobile, and other Windows 10 devices.
Even though Microsoft extended the lifecycle support for AppX, the tendency is to replace it with MSIX format. As for the MSI, it remains the preferred format of the majority and looks like it is here to stay.
MSIX is a young technology - there is so much more to be developed. And that’s why it comes with imperfections and some serious limitations. It is, though, the future of containerization. Below I have summarized a side-by-side comparison of MSI and MSIX “builds” to have a practical overview of the features and limitations for each of the formats.
|Digital Signature||Mandatory||Recommended but not mandatory|
|Registry||Containerized hives* HKEY_LOCAL_MACHINE HKEY_CURRENT_USER
|All registry hives: HKEY_LOCAL_MACHINE HKEY_CURRENT_USER
|Shortcut||Executed as App (Windows App) Command-line arguments not supported yet**||A custom shortcut that can link anything|
|Install Folder||By default in %ProgramFiles%\WindowsApps *****||Can be customized|
|Execution Environment||Containerized***||Direct in the OS|
|Custom Actions||It can only be executed before the app is opened or when it’s closed. It cannot be placed in the install sequence. Scripts executions are added to the config.json file||Can be executed anywhere in the install sequence|
|Table Editing||Not supported||Supported|
|Context menu||Limited****||Shell menu & shell extensions|
*Containerized hives mean than there is no regular registry hive. Instead, the containerized registry data is kept in 3 .dat files: Registry.dat User.dat User.Classes.dat.
Inspect the MSIX registry using Hover here.
**Command-line arguments are not supported, and there is no Argument entry in the MSIX manifest. However, this can be tweaked by creating a stub/launcher used as an entry point in your MSIX app using Advanced Installer. See here how.
***Containerized means the files are redirected. Learn more here.
****Limited - you can have some sort of file association and context menu. Learn more here.
****Install Folder - The default installation folder can be changed via powershell cmdlets.
For the moment MSIX is limited to the features below. Each feature is available only starting with a certain Windows version.
|Allow elevation||Starting with version 1809|
|App Installer File Support||Starting with version 1709|
|Defer registration flag||Starting with version 2004|
|Force update from any version downgrade||Starting with version 1809|
|Force provisioning||Starting with version 2004|
|Identity for packaged desktop apps||Starting with version 1709|
|Microsoft Store submission & support||Starting with version 1809|
|Modification packages||Starting with version 1809|
|Native MSIX install and uninstall||Starting with version 1709|
|Package format .msix .appx .appxbundle||Starting with version 1709|
|Package format .msixbundle||Starting with version 1709|
|Package Integrity Enforcement for non-Store packages||Starting with version 2004|
|Package Support Framework (PSF)||Starting with version 1709|
|Windows services||Starting with version 2004|
More on the subject is available here: MSIX supported features by OS.