Windows Installer Error 2908 when installing bulky setup projects

Posted on Monday, November 12th, 2007 at 9:20 am by Andrei Smolin

On one of our test PC (a virtual one) with VS 2008 Beta2 installed, we got the following problem. If any of Add-in Express for .NET product packages are installed, uninstalled and re-installed for the second time, the “Error 2908″ message is shown a tremendous number of times. It is obvious that the message is shown for every file included into the package. What is worse, when the setup program is complete, you get this error again when you install or uninstall any MSI-based product. That is, from the common point of view, Windows becomes inoperable. Windows Installer Error Messages doesn’t provide any useful info.

If you google for “Error 2908″, you’ll find out that this error occurs for a number of applications. Workarounds exist for installing Office 2000 on Windows 98 or ME, NET Framework 1.1, Visual Studio 2005. But none of those workarounds worked for us.

Then we found an interesting post on the www.eggheadcafe.com forum: they added Crystal Reports merge modules to their setup and got this error. This resulted in “reinstalling windows on computers affected with this error.” What Microsoft suggested is “ask Business Objects company that produces the Crystal Report for assistance”. As you may assume, Crystal Reports supporters sent poor devils back to Microsoft.

However, we googled out some vague notes that the cause of this error may relate to the number of files included into the package. This was somehow backed up by Orca that reported the following incomprehensible warning message: Feature ‘DefaultFeature’ has XXXX components. This could cause problems on Win9X systems. You should try to have fewer than 817 components per feature.

To verify this assumption, we created a simple setup with some 2000 files. Nevertheless, this setup program has run through the install/uninstall/install procedure successfully. But when we added a custom action (Install, Rollback, and Uninstall), we got Error 2098 again. Moreover, it turned out that install/uninstall is enough for breaking the Windows Installer down. Then we found that the number of files that does the trick lies between 1000 and 1022. We don’t know if this number depends on the number of custom actions.

This research forced us to decrease the number of Add-in Express files by moving demo projects to a ZIP archive. And in this way, we overpowered Error 2908.

But this was not the end of the story. We felt obliged to find a way for our customers to restore their PCs if they have got into this trap by installing Add-in Express.

The solution was found by a pure chance. Thank Heavens.

Deleting the following key restores the functionality of the Windows Installer:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Installer\UserData\S-1-5-21-1123561945-1935655697-1060284298-1003\
Components\AD95649F068525549B26938D7D18FEA7

We don’t know who created this key: repairing Office and all .NET Framework versions on that PC doesn’t restore the key. Currently, we believe this key is created by Visual Studio 2008 Beta 2. We don’t know what impact the deletion of this key may have on any software on that PC.

What makes us think the key is suspicious? The registry contains the following branches:
 The Installer-UserData registry branches.

Further on, I will refer to branch S-1-5-18 as ShortSID and S-1-5-21-1409082233-343818398-725345543-1004 as LongSID.

Our experiments showed that products installed for all users fall into the ShortSID/Products branch. Accordingly, products installed for the current user only, fall into the LongSID/Products branch. For every file in the setup project, we got an entry in the Components branch. This entry contains a registry value whose name refers to the product’s entry in the Products branch. Hope this makes sense :)

The key mentioned above looks suspicious for the following reasons:
Firstly, it is located in the LongSID/Components branch (the registry value is (B3414A45B4B628042B8446B35265C1BC), but, in the LongSID/Products branch, there is no corresponding product.

Secondly, the value of this registry value contains a question mark instead of a colon in the path: C?\WINDOWS\system32\rgb9rast_2.dll
The registry key that causes Error 2908.
We tried deleting this key and it helped. Finally, we tried creating this key on a clean PC and reproduced Error 2908 with our test setup project.

Conclusions:
1. It required 3 days X 4 developers to fix the problem that, as we know for sure, was not engendered by us.
2. Any developer can create a setup project that may make Windows practically inoperable.
3. This developer will be blamed for no reasons.

Post a Comment

You must be logged in to post a comment.