Aaron Stebner's WebLog

Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio

How to locate the cause of error code 1603 in a verbose MSI log file

How to locate the cause of error code 1603 in a verbose MSI log file

Rate This

There is a trick I use very often when trying to figure out why an MSI-based setup is failing that I wanted to share with everyone.  I believe it is commonly known among setup developers and people who have to troubleshoot failed setups, but I could not find any "official" documentation for it.  This trick helps narrow down the root cause of error code 1603, which is a generic catch-all error code that means "fatal error during installation".  The 1603 error code is returned when any action fails during an installation, and most commonly it indicates that one of the custom actions in the MSI failed.

When I encounter a failed setup with return code 1603, here are the steps that I follow:

  1. Re-run the setup with verbose logging enabled using steps similar to those that I listed here (if there is not already a verbose log file available).  Those steps will generate a verbose log file named msi*.log in the %temp% directory the next time the setup package is executed.

    Important note - some MSI-based setups, including the .NET Framework 2.0, 3.0, 3.5 and higher and Visual Studio, will not create log files named %temp%\msi*.log even if using the instructions listed below.  Please see this blog post for more details about why that is the case and also for a list of some products that I know of that use different log file creation logic and the locations of the log files that they create.

  2. Open the verbose log in a text editor such as notepad and search for the string "return value 3".  In nearly all cases, this takes me to the section in the verbose log that lists the action that failed that initially caused setup to rollback.
  3. Review the contents of the log file immediately above the "return value 3" string to determine which custom action or standard action failed.
  4. Depending on which action is failing, I will proceed to more detailed debugging from here

I find that the biggest hurdle to debugging a failed setup is often zeroing in on which part of the setup is actually failing, and this trick of searching for "return value 3" ends up helping speed this process up in nearly all cases.  Of course, it does not work in 100% of scenarios.  Notably, if you are running setup on a non-English version of Windows, the string "return value 3" is written to the log file in the language of the operating system instead of in English, so string searches will not work.

Also note that there is an MSI verbose log parsing tool in the Windows Installer PSDK that is also very useful in locating errors inside verbose log files.  You can read more about this parsing tool (called wilogutl.exe) by clicking here.  This tool is more thorough in identifying errors, but most often I end up not using it because it is faster to open the log in notepad and do a string search than it is to load up the parsing tool, browse to the log file, wait for it to parse the whole log and then read the output it produces.

<update date="1/21/2009"> Added a caveat to these instructions indicating that some setups create their own verbose logs and enabling verbose logging using the Windows Installer logging registry keys will not work as expected for those setups. </update>


  • Hi Ijaas Yunoos - Your log file shows that the ServiceModelReg custom action is failing on your system, and that causes .NET 3.0 setup to fail.  I have posted some ideas about how to troubleshoot that type of failure at http://blogs.msdn.com/astebner/archive/2008/03/28/8342307.aspx.  I've already done steps 1-3 for you, so you can skip to step 4.

    Alternatively, you can also try to install the .NET Framework 3.5 SP1 instead of the original 3.5.  The 3.5 SP1 installer will install 3.0 SP2 behind the scenes as a prerequisite, and 3.0 SP2 has some modified setup logic that will not cause the entire installation to fail if this ServiceModelReg custom action fails.

    Hopefully one of these helps.

  • Thanks Arron,

    I used the easy method of installing 3.5 Sp1 and it worked.


  • PingBack from http://www.keyongtech.com/3249920-installing-net-3-5-a

  • I did everything I found on the net to resolve this problem but nothing worked!! I'm tired! I'm on it for 3 days now!

    I have uninstall all traces of frameworks on my computer (Normal uninstall, then manually uninstall reg keys and folder and then clean up tool) Then I successfully install  Framework 1.0, 2.0 then 2.0 SP1 with all updates and now I can't install Framework 3.0 or 3.5!

    I'm always getting errors and rolling back actions then!

    P.S. I have windows XP Pro SP3 with all updates and IIS is not installed.

    Her are the Errors for the Net Framework 3.0 Version:

    EventType : visualstudio8setup     P1 : 10860    

    P2 : 3.5.21022.08_orcas_x86_net     P3 : pr     P4 : inst     P5 : f    

    P6 : gencomp734_{168d82f8-ac6b-4b55-804f-2ae51ac4b     P7 : baseret_failure

    P8 : -     P9 : 1603     P10 : -


    [01/21/09,17:38:18] Microsoft .NET Framework 3.0a: [2] Error: Installation failed for component Microsoft .NET Framework 3.0a. MSI returned error code 1603

    [01/21/09,17:39:54] Microsoft .NET Framework 3.0SP1 x86: [2] Error code 1603 for this component means "Erreur irrécupérable lors de l'installation." ( Traduction "Fatal Error during the installation")

    [01/21/09,17:39:54] Microsoft .NET Framework 3.0SP1 x86: [2] Setup Failed on component Microsoft .NET Framework 3.0SP1 x86

    [01/21/09,17:40:10] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0SP1 x86 is not installed.

    Here is the Verbose log file:


    Here are the errors when I try to install the 3.5 SP1 Version:

    EventType : visualstudio8setup     P1 : 35101    

    P2 : 3.5.30729.01_orcas_x86_net     P3 : mc     P4 : inst     P5 : f    

    P6 : writeregistryvalues     P7 : -     P8 : 1603     P9 : -    

    P10 : gencomp780_{12cd    


    [01/21/09,19:17:03] Microsoft .NET Framework 3.0 SP2 x86: [2] Error: Installation failed for component Microsoft .NET Framework 3.0 SP2 x86. MSI returned error code 1603

    [01/21/09,19:19:28] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0 SP2 x86 is not installed.

    [01/21/09,19:31:05] Microsoft .NET Framework 3.0 SP2 x86: [2] Error: Installation failed for component Microsoft .NET Framework 3.0 SP2 x86. MSI returned error code 1603

    [01/21/09,19:32:04] WapUI: [2] DepCheck indicates Microsoft .NET Framework 3.0 SP2 x86 is not installed.

    I would appreciate any help. I'm desperate!

    Thank you for all.

  • Hi Tomas Portnoy - The .NET Framework installers configure their own verbose logging, so using the registry key to enable verbose logging and then searching for msi*.log doesn't work for these setups.  Can you please use the list of log files at http://blogs.msdn.com/astebner/archive/2008/04/30/8445569.aspx to find the .NET Framework setup log files from your system, and then zip and upload them to a file server so I can try to take a look?

  • Thank you for respondig so quiclky Aaron. I followed the link you gave me and did everything said in it.

    I only did it for the NET Framework 3.5 (Because I almost have the same errors for the 3.0 and I tink the 3.5 installation fail when it's installing the 3.0 so...)

    I found 3 files.

    Here is the link.


    If you find something to fix it, then you will be a god to me.

    Thank you.

  • Hi Tomas Portnoy - Thanks for posting these logs.  There is an additional log file that is needed to narrow down this failure further.  From the logs you posted, this is the name and location of the additional log that we need to look at next:

    [01/22/09,20:46:43] Microsoft .NET Framework 3.0 SP2 x86: Enabling MSI log file: C:\DOCUME~1\PROLET~1\LOCALS~1\Temp\dd_NET_Framework30_Setup21A2.txt

    Can you zip and post that log as well?

  • Hi Aaron. I take a look at the dd_NET_Framework30_Setup21A2.txt file and searched for the "return value 3" string.

    I found it and take another look at the string just above:

    Microsoft .NET Framework 3.0 Service Pack 2 -- Erreur 1402. Impossible d’ouvrir la clé HKEY_LOCAL_MACHINE\Software\Classes\.xps\PersistentHandler. Erreur système 5. Vérifiez que vous disposez des droits d’accès nécessaires.

    It was saying that the reg key was unable to be open, so i gave me the rights of "HKEY_LOCAL_MACHINE\Software\Classes\.xps\" from the regedit pannel, and the installation goes fine!!

    It's annoying to see how often the keys are restricted even when you're the administrator!

    Thank you for you help sir. I wounldn't be able to do nothing without your help...

  • Hi Tomas Portnoy - I'm glad to hear that you were about to find the cause of and the fix for this issue.  I agree - it is really unfortunate that ACLs can be removed for the Administrators group like this and can cause installers to fail in very cryptic ways.

  • Hello Aaron,

    I am having this same problem! Everytime I try run Visual Studio 2008, I get mass errors and then it loads but I can not create a project.. So I uninstalled and now when I reinstall I get the error!

    I have done the verbose logging (I think) which I will email to you.. Any help would be appreciated!

  • Hi BMort - I received an email from you, but the log you sent is not a verbose log file from VS 2008 setup though.  There is an important note listed in the instructions in this blog post, and it links to http://blogs.msdn.com/astebner/archive/2008/02/27/7927123.aspx.  That blog post explains that some installers enable their own verbose logging, and when that happens, the technique of enabling logging using the registry value and then looking for msi*.log does not work.  You can find the names and locations of the verbose log files created by VS 2008 setup at http://blogs.msdn.com/astebner/archive/2007/07/31/4156781.aspx.

  • I was working with our product support team on an interesting .NET Framework 3.5 SP1 installation failure

  • Here are the results from the verbose MSI log:

    MSI (s) (2C!44) [17:39:01:906]: Closing MSIHANDLE (39) of type 790531 for thread 2372

    MSI (s) (2C:48) [17:39:02:000]: Closing MSIHANDLE (38) of type 790536 for thread 348

    MSI (s) (2C:5C) [17:39:02:062]: Executing op: ActionStart(Name=SelfRegModules,Description=Registering modules,Template=File: [1], Folder: [2])

    Action 17:39:02: SelfRegModules. Registering modules

    MSI (s) (2C:5C) [17:39:02:172]: Executing op: ProgressTotal(Total=3,Type=1,ByteEquivalent=1300000)

    MSI (s) (2C:5C) [17:39:02:218]: Executing op: SetTargetFolder(Folder=C:\WINDOWS\system32\)

    MSI (s) (2C:5C) [17:39:02:265]: Executing op: RegSelfReg(File=mscoree.dll,FileID=FL_mscoree_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8)

    SelfRegModules: File: mscoree.dll, Folder: C:\WINDOWS\system32\

    MSI (s) (2C:5C) [17:39:03:078]: Executing op: SetTargetFolder(Folder=C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\)

    MSI (s) (2C:5C) [17:39:03:140]: Executing op: RegSelfReg(File=mscordbi.dll,FileID=FL_mscordbi_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8)

    SelfRegModules: File: mscordbi.dll, Folder: C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\

    MSI (s) (2C:5C) [17:39:03:359]: Executing op: RegSelfReg(File=mscorsec.dll,FileID=FL_mscorsec_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8)

    SelfRegModules: File: mscorsec.dll, Folder: C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\

    MSI (s) (2C:5C) [17:39:03:546]: Executing op: ActionStart(Name=CA_ComRegSystemData.3643236F_FC70_11D3_A536_0090278A1BB8,,)

    Action 17:39:03: CA_ComRegSystemData.3643236F_FC70_11D3_A536_0090278A1BB8.

    MSI (s) (2C:5C) [17:39:03:671]: Executing op: CustomActionSchedule(Action=CA_ComRegSystemData.3643236F_FC70_11D3_A536_0090278A1BB8,ActionType=3073,Source=BinaryData,Target=_QuietExec@4,CustomActionData=C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\RegAsm.exe C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll;System.Data.dll;C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\)

    MSI (s) (2C:5C) [17:39:03:750]: Creating MSIHANDLE (40) of type 790536 for thread 348

    MSI (s) (2C:28) [17:39:03:812]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI7D.tmp, Entrypoint: _QuietExec@4

    MSI (s) (2C!70) [17:39:03:843]: Creating MSIHANDLE (41) of type 790531 for thread 2416

    1: C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\RegAsm.exe C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll

    MSI (s) (2C!70) [17:39:05:765]: Creating MSIHANDLE (42) of type 790531 for thread 2416

    1: ERROR: Process returned non-0 value! CMDLINE: C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\RegAsm.exe C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll

    MSI (s) (2C!70) [17:39:05:999]: Closing MSIHANDLE (42) of type 790531 for thread 2416

    1: Failed

    MSI (s) (2C!70) [17:39:06:078]: Closing MSIHANDLE (41) of type 790531 for thread 2416

    MSI (s) (2C:28) [17:39:06:109]: Closing MSIHANDLE (40) of type 790536 for thread 348

    Any ideas on what the issue might be?

  • Hi ZachSmith - This is the action that is causing .NET Framework 1.0 to fail:

    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\RegAsm.exe C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\System.Data.dll

    RegAsm is essentially trying to write some registry keys for System.Data.dll.  I'm not sure why that action would fail though.  What OS are you seeing this happen on?

    If you haven't yet, I'd suggest trying to use the steps listed at http://blogs.msdn.com/astebner/archive/2008/03/07/8108332.aspx to remove all versions of the .NET Framework, then install the .NET Framework 3.5 SP1 from the link at http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7.

    After installing 3.5 SP1, I'd suggest trying again to install the .NET Framework 1.0 and see if it works better after that.

  • I have heard from a few folks recently (such as this blog comment and this forum post ) who have run

Page 3 of 8 (107 items) 12345»
Leave a Comment
  • Please add 1 and 7 and type the answer here:
  • Post