Skip to main content

MSI-only Features

Everything in this section lives inside the msi: { … } block of your package. None of these properties have an MSIX equivalent.

Each capability has its own page so you can jump straight to the one you need.

#PageWhat you configure
1Upgrade CodesupgradeCode, secondaryUpgradeCodes – product identity across versions
2CAB ConfigurationcabName, cabSizeInBytes – how the produced MSI is laid out
3Propertiesproperties – custom MSI properties for conditions, dialogs, custom actions
4INI FilesiniFiles – create / modify INI files at install time
5Custom ActionscustomActions – EXE / DLL / RegSvr / PowerShell / driver / set-property
6Install DialoginstallDialog – branded MPDEV install dialog
7Detect Running ProcessesdetectRunningProcesses – tell users to close apps before install
8Package DependenciespackageDependencies – pre-install dependency checks (with optional WinGet install)
9Auto-Updater: How It Worksupdater – how the auto-updater works, architecture, security model
9bAuto-Updater: Configurationupdater – configuration, feed design, install-time overrides, troubleshooting
10Base MSIbaseMsi – use a custom MSI template as the build base

Quick orientation

A complete msi: { … } block can mix all of the above. The shape is:

"msi": {
"upgradeCode": "{GUID}",
"secondaryUpgradeCodes": [ /* ... */ ],
"baseMsi": "templates\\Base.msi",
"cabName": "#Disk.cab",
"cabSizeInBytes": 314572800,

"properties": [ /* ... */ ],
"iniFiles": [ /* ... */ ],
"customActions": {
"exe": [ /* ... */ ],
"dll": [ /* ... */ ],
"registerDll": [ /* ... */ ],
"powershell": [ /* ... */ ],
"installDriver": [ /* ... */ ],
"setProperty": [ /* ... */ ]
},
"installDialog": { /* ... */ },
"detectRunningProcesses": [ /* ... */ ],
"packageDependencies": [ /* ... */ ],
"updater": { /* ... */ }
}

Pick whatever subset your installer needs and ignore the rest – every property is optional unless explicitly noted on its page.