If you've dealt wit the Windows Installer at all, you know the fastest way to figure out what went wrong is to look at a verbose log file. The normal log file doesn't provide enough information to really diagnose things going wrong, so I always generate a verbose log file like so:
msiexec /l*v i.txt /i path\to\the.msi
Then I open "i.txt" in notepad.exe and search for "value 3". Yep, the magic is "value 3". Value space three. Let me repeat that:
value 3
Basically, the Windows Installer spits out "value 3" when an action in the installation failed. So if you look up a few lines you'll see the culprit. I bet it's a custom action. <wink/>
RobMensching.com LLC
10 Comments
Comment by misch on Monday, August 2, 2010 11:22 PM
Comment by Stefan Pavlik on Tuesday, August 3, 2010 1:54 AM
Example:
MSI (s) (B8:10) [23:47:18:090]: Note: 1: 2262 2: IsolatedComponent 3: -2147287038
Aktion gestartet um 23:47:18: IsolateComponents.
MSI (s) (B8:10) [23:47:18:090]: Doing action: CostFinalize
Aktion beendet um 23:47:18: IsolateComponents. Rückgabewert 1.
Comment by Mattias Jansson on Wednesday, August 4, 2010 12:16 AM
Action start 08:40:52: IsolateComponents.
Action ended 08:40:52: IsolateComponents. Return value 0.
The latter row contains something that would translate to "Return value".
Comment by Samuel Jack on Thursday, August 5, 2010 9:06 AM
Comment by Lee Berg on Thursday, August 5, 2010 1:49 PM
Comment by philippecp on Friday, August 6, 2010 9:18 AM
Comment by Eric on Tuesday, August 31, 2010 5:07 AM
Comment by Blair on Thursday, September 23, 2010 12:08 AM
Custom action return values (http://msdn.microsoft.com/library/aa368072.aspx) get translated into "script" CA return values (http://msdn.microsoft.com/library/aa371254.aspx) and logged that way. Thus, 3 = IDABORT. 1 = IDOK (aka Success!)
Comment by Thomas Deboben on Thursday, January 26, 2012 12:01 AM
the first thing I do with an MSI log is to open with the Microsoft tool "Windows Installer Verbose Log Analyzer" (WiLogUtl.exe).
One Problem is that WiLogUtl.exe support only MSI logs up to MSI version 3.0.0.0.
So if I have a log file from a newer version I first change the version in the first line of the log file using notepad or any better editor.
As example the first line is
=== Verbose logging started: 1/20/2012 8:58:55 Build type: SHIP UNICODE 3.01.4001.5512 Calling process: C:\WINDOWS\system32\msiexec.exe ===
so I change 3.01.4001.5512 to 3.0.0.0 and save the log file. Now WiLogUtl.exe will be able to handle the log file.
Just open the log file an press the "Analyze" button.
Now you get a "Detailed Log File View" dialog from where you could check states, properties etc.
My prefered option is the "HTML Log". Allow Blocked Content is required.
Now you could use the buttons "First Error", "Last Error", "Previous Error" and "Next Error" to navigate.
For better reading the lines are formated in different colors.
When jumping to an error you have to scroll some lines up to find the reason of the error like Rob said in his blog.
Comment by Sergii on Tuesday, October 16, 2012 11:24 AM
I encourage you to try Legit Log Viewer in favor of legendary Notepad :).
It supports MSI (Windows installer) logs and WiX burn logs out-of-box. And many other formats via XML config files.
Current version doesn't support log headers, so you should remove "=== Verbose logging started:..." string form the beginning of MSI log.
Later we will publish update and add support for log headers. Since I’m personally using it to troubleshoot our installs, it will be sooner than later.