Windows Installer can log its activity in a text file and this is one of the first things you should do to diagnose installation or uninstallation issues.
The simplest way of turning on logging for an installation is via the "MSIEXEC.EXE" command line as shown below. But for situations where this is not possible you can also do this via policies.
There are different levels of logging, as I'd rather have too much than too little, I always turn on everything, this is called a "verbose log".
|Turn on Logging - MSIEXEC.EXE Command Line|
The following is an example command line to create a verbose log:
msiexec.exe /i "C:\MSI\some.msi" /l*v "c:\tmp\verbose.log"
There is a type of "super verbose" mode (I think Windows Installer 3+) which can be invoked like:
msiexec.exe /i "C:\MSI\some.msi" /l*vx "c:\tmp\SuperVerbose.log"
If you have an MSI wrapped up in an EXE then there may be a method of turning on logging, you can turn on logging with an "InstallShield" EXE like:
SomeSetup.exe /v"/L*v c:\tmp\verbose.log"
The "/v" means pass to the MSIEXEC command line, I have not investigated what I'd need to do to have a log filename which contains spaces (this will probably involve a lot of swearing).