Q:

Setup Project creates two files, what are the differences?

I'm creating an installer for my application, and the setup project I've created for the installer creates two files, one named setup.exe and one named [project name].msi.
What are the differences between these two other than the extensions?
Thanks!

A:

msi file is the Windows Installer file.  It's a database storing all the stuff about your package, including the registry entries, files, shortcut.  MSI file itself cannot be executed.  The real installation work is done by Windows Installer service.
exe file is a bootstrapper file.  It's a self extractable file.  When you double click it, it extracts the msi file.  If prerequisites not found on target machine, it can help installing it. e.g. VC runtime, Windows Installer 3.1, etc.
If prerequisites does not exist and you run the msi file instead of exe file, the msi file usually also does some pre-installation checking and give you a warning but the msi file itself won't install the prerequisites for you.
You can deploy your software via Group Policy using msi file but not exe file.

