While building Visual Studio setup project it produces two files: [ProgramName].msi
and setup.exe
. What is the purpose of each one?
The MSI file is the main package, that contains all the files, registry entries, custom action, etc... This is loaded by Windows Installer service (msiexec.exe) and executed accordingly.
The EXE file is actually a wrapper meant to provide additional support for features not supported by Windows Installer. The most important feature is installing prerequisites. However, there other commercial setup authoring tools that include a lot more support in the EXE like compression support to minimize package size, custom UI themes, or maybe creating a single mixed package instead of two separate MSIs (x86 and x64).