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 HKEY_CLASSES_ROOT|
|All registry hives: HKEY_LOCAL_MACHINE HKEY_CURRENT_USER HKEY_CLASSES_ROOT|
|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.
More on the subject is available here: MSIX supported features by OS.