Return codes for .NET Framework 3.0 setup

A while back, I posted a list of possible return codes for the .NET Framework 2.0.  I recently found out that the setup wrapper for the .NET Framework 3.0 can return a couple of other error codes in certain scenarios, so I wanted to list those here as well for completeness:

0x0013EC (5100) - Generic setup block

This error code will be returned in several different scenarios:

  • The user running setup does not have administrative privileges
  • A previous beta version is installed (the algorithm is similar to the one for the .NET Framework 2.0 described here, but the product codes are stored in the file named setup.sdb instead of install.ini)
  • A later version of the .NET Framework 3.0 is already installed
  • The OS that setup is being run on is not supported
  • The OS that setup is being run on does not have the minimum service pack installed

0x002332 (9010) - A pending reboot must be completed before setup can run

This error code is returned if some previous action on the system caused pending file rename operations to be scheduled by adding entries to the following registry value:

  • Registry root: HKEY_LOCAL_MACHINE
  • Registry key name: Software\Microsoft\Updates\UpdateExeVolatile
  • Registry value name: Flags -or- Flags_<reboot time>

This error can typically be resolved by rebooting the system.  If the error continues to occur even after a reboot, you can manually delete this Flags value from the registry on your system to work around it.

The reason that .NET Framework 3.0 setup contains a check for this registry value is that a couple of the prerequisite packages that it installs are Windows OS hotfixes.  These hotfixes include specific checks for this registry value and they will fail if it exists and is non-blank.  The .NET Framework setup team decided it would be best to catch this type of error at the beginning of the setup process instead of letting setup start running and then fail later on for a cause that could easily be validated up-front.

<update date="11/29/2006"> Updated the registry value that .NET Framework 3.0 setup checks to determine whether a pending reboot must be completed. The original value I posted (HKLM\System\CurrentControlSet\Control\SessionManager@PendingFileRenameOperations) is used by many Windows applications, but .NET Framework 3.0 setup does not check for that value because it will not result in any of its prerequisite packages failing. </update>