A few weeks ago I posted a list of supported command line switches for the new setup wrapper that is used to install the .NET Framework 2.0 and other products in the Visual Studio 2005 family. If you are deploying the .NET Framework 2.0 as part of another setup package, the command line parameters are only one piece of the puzzle. It is also useful to listen to the return codes passed back by the setup package in order to determine if .NET Framework 2.0 setup succeeded or failed.
In general, the return code 0 indicates success, the code 3010 indicates success with a reboot required, and anything else indicates failure.
Here is a list of other return codes that could be generated by the .NET Framework 2.0 setup wrapper along with descriptions of what they mean:
- 0x001000 (4096) - Invalid command line parameter(s)
- 0x001001 (4097) - Administrator provileges are required to run setup
- 0x001002 (4098) - Installation of Windows Installer failed (this is a legacy return code that is not used since we stopped bootstrapping Windows Installer as a part of the .NET Framework setup during the 2.0 product cycle)
- 0x001003 (4099) - Windows Installer is not configured properly on the machine
- 0x001004 (4100) - CreateMutex failed
- 0x001005 (4101) - Another instance of setup is already running
- 0x001006 (4102) - Cannot open the MSI database
- 0x001007 (4103) - Cannot read from the MSI database
- 0x00100F (4111) - Cannot retrieve the %temp% directory
- 0x001011 (4113) - Beta components have been detected on the machine that must be uninstalled before installation can proceed
- 0x001013 (4115) - The length of the %temp% path is too long
- 0x001014 (4116) - The length of the source path too long
- 0x001016 (4118) - Failed to create or write to the log file
- 0x001017 (4119) - The Windows Installer service is not responding to Service Control requests and the system requires a reboot in order to continue
- 0x001018 (4120) - An internal error occured while trying to initialize the Windows Installer service
- 0x001019 (4121) - One or more prerequisites for this product is missing
- 0x00101A (4122) - The product does not support installing on the current operating system type
- 0x00101B (4123) - The product is already installed as an operating system component (the .NET Framework 2.0 is an OS component on Windows Vista and installing the MSI-based setup is blocked and will return this error in silent mode)
- 0x00101C (4124) - Error processing the install.ini file (there is either a syntax error or a missing mandatory entry)
- 0x001FFF (8191) - Setup failure - unknown reason (all errors not covered above are grouped into this bucket)
- 0x002000 (8192) - Reboot is required
Here are some other error codes that could be returned by the .NET Framework 2.0 setup wrapper, but that are actually generated by Windows Installer and not by the code for the setup wrapper itself:
- 0x00000641 (1601) - The Windows Installer service could not be accessed
- 0x00000642 (1602) - The user cancelled setup. Installation cannot proceed
- 0x00000643 (1603) - Fatal error during installation (this error is returned if any custom action fails within an MSI-based setup for example)
- 0x00000656 (1622) - Error opening Windows Installer log file. Verify that the log file location exists and is writable.
- 0x00000661 (1633) - This installation package is not supported on this platform
Please note that I do not list any generic Win32 error codes here. You can use a tool such as errlook.exe (which ships in %ProgramFiles%\Microsoft Visual Studio 8\Common7\Tools if you have VS 2005 installed) or err.exe to translate Win32 error codes.
<update date="12/12/2005"> Added some common Windows Installer error codes to the list </update>