Windows Installer Error 2908 with Sub Errors 1402 and 1450

Summary

The Windows Installer error code 2908 with sub errors 1402 and 1450 has been quite eluding until recently. While working on a shipping product this error occurred on a few machines within the internal population. At first the error was disregarded as not reproducible. However, it soon became a small internal epidemic. The original thoughts were that there had been an issue with the MSI package itself.

The error code 2908 (https://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx) simply says "Could not register component [2]." When doing some searching around the web there are a couple good hits that come back with answers that are not unique to the sub errors of 1402 and 1450. One link that had a good grasp on the problem was from the Add-in Express Blog. This tracked the error down to the following registry key and then the current user's profile inside of it.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ <user-sid> \Components

The error is easily reproducible with a Per-User install of an MSI where there are no other Per-User installations on the machine and more then roughly 1,000 components being installed. Below is a sample output from a Windows Installer verbose log file.

MSI (s) (5C:C8) [11:28:38:420]: Executing op: ComponentRegister(ComponentId={AC763451-B00C-4E4C-9E0D-9F3A0921AF47},KeyPath=C:\Program Files\My App\file_100000.exe,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0) 1: {3C7EE564-C47A-4E1E-8B57-CFF4A7F07EC9} 2: {AC763451-B00C-4E4C-9E0D-9F3A0921AF47} 3: C:\Program Files\My App\file_100000.exe MSI (s) (5C:C8) [11:28:38:430]: Note: 1: 1402 2: UNKNOWN\Components\154367CAC00BC4E4E9D0F9A39012FA74 3: 1450 DEBUG: Error 2908: Could not register component {AC763451-B00C-4E4C-9E0D-9F3A0921AF47}. MSI (s) (5C:C8) [11:29:04:427]: Product: My App -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2908. The arguments are: {AC763451-B00C-4E4C-9E0D-9F3A0921AF47}, , MSI (s) (5C:C8) [11:29:04:447]: Executing op: ComponentRegister(ComponentId={243DF9B9-C1A6-450C-8F64-0CCFF18C834D},KeyPath=C:\Program Files\My App\file_100001.lib,State=3,,Disk=1,SharedDllRefCount=0,BinaryType=0) MSI (s) (5C:C8) [11:29:04:447]: Note: 1: 1402 2: UNKNOWN\Components\9B9FD3426A1CC054F846C0FC1FC838D4 3: 1450 MSI (s) (5C:C8) [11:29:04:447]: Product: My App -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2908. The arguments are: {243DF9B9-C1A6-450C-8F64-0CCFF18C834D}, ,

Cause

The errors 1402 and 1450 are return values from calls made by the Windows Installer team's call to RegOpenKeyEx. The error being returned from this call does not make sense either. After some tracking down it was discovered to be a bug in that call. On a Per-User installation there are typically not enough child keys to change the type of the parent key. When the parent key's type changes it has an error handling one or more child keys after it has had several hundred keys in it's hive. 

Resolve

In most cases, the one child key left over is the one listed below. Removing this key and/or any other key(s) in the use's profile will keep the error from happening an allow for the installation of the product. It is also possible to install the MSI for all users. 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ <user-sid> \Components\AD95649F068525549B26938D7D18FEA7
"B3414A45B4B628042B8446B35265C1BC"="C?\\WINDOWS\\system32\\rgb9rast_2.dll"

Applies To

Windows XP SP3 and below
Windows Vista is not affected