Pitfalls

Common Pitfalls

I have observed a couple of common mistakes made when wrapping the setup executable. See if any of these reasons could cause your MSI to malfunction.

Double Entry in Add or Remove Programs

If you see your program listed twice under Add or Remove Programs in Windows, you most likely have a problem with your version numbers.

Windows Installer only looks at the first three numbers in the version number. This means that version 1.2.3.4 is the same as version 1.2.3.5. Therefore, an upgrade to version 1.2.3.5 is considered a different package for the same version. The different package is installed instead of upgraded.

The solution is obvious. Remember to increase the first, second, or third part of the version number when you make an upgraded version of the package.

Wrong Application Id

If you by accident choose the wrong application id for your package then the original entry in the Add or Remove Programs list is not hidden. Furthermore, your MSI will not be able to run the wrapped uninstaller when the MSI is removed from the system.

Application Ids can easily be found using the look up button in the wizard. Remember to install your program using the normal setup executable before you try to look up the application id. If you see your application multiple times then it could be caused by old installations that were not properly uninstalled. This sometimes happens on the machines where the developer creates and tests the setup programs.

Nested MSI Packages

You can experience that the installation of the MSI package hangs if your wrapped executable installer tries to install an embedded MSI packages. The Windows Installer seems to get confused if the MSI packages are nested in a way where your MSI launches an EXE that launches another MSI.

Scenarios like this can happen if your executable installer contains a file like vcredist_86.exe. This is the Visual Studio C++ runtime redistribution package. Even though it looks like an executable, it is in fact an MSI package in disguise.

A possible workaround to this situation could be to add a switch to your executable installer that will disable the installation of this runtime. This package can be distributed as a standalone installer in a software distribution environment.