Installation/Upgrading of SP4 on MSDE fails with 'Error: 0x800401F0'

When we run the service pack 4 setup for SQL 2000 MSDE we noticed that when we launch the service pack setup the setup.exe is launched (shows up in the task manager) but exits immediately without warning!

Setup in SQL Desktop Engine (MSDE), rolls back and exits if a failure is encountered, unless you specify the switch DISABLEROLLBACK=1 /L*v C:\MSDEsetup.log

According to the syntax used we had enabled verbose logging but oddly no log was getting created;

Syntax used:
Setup upgradesp sqlrun INSTANCENAME=MSSQLServer BLANKSAPWD=1 /L*v C:\MSDELog.log

The errors noted from the application event log

2/2/2010 12:24:56 PM MsiInstaller Information None 11729 <domain\login> <server name> Product: Microsoft SQL Server Desktop Engine -- Configuration failed.
2/2/2010 12:24:56 PM MsiInstaller Warning None 1015 <domain\login> <server name> Failed to connect to server. Error: 0x800401F0

The details about the hexadecimal error code were as follows:
Error Result : 0x800401F0 ( -2147221008 )
ID Defined as : CO_E_NOTINITIALIZED
Error Type : OLE HRESULT Error
Code : 0x000001F0 ( 496 )
Source Error file : Winerror.h
Message Text : CoInitialize has not been called.

 Resolution        

· We navigated to the registry key :

HKEY_CLASSES_ROOT\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\   —GUID for product Microsoft SQL Server Desktop Engine 

· We noticed that SourceList subkey was missing 

· The source list entry was also missing in:

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\

· From the registry backup collected we noticed that the last used source was : \\machinenamew2k\E\win32\redist\en\

· We were unable to access it as it was an invalid location

· We created two registry files to add in the missing entries :

§ sourcelist_HKLM.reg :The below keys need to be created

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList]

· Create a REG _SZ key and name it "PackageName”

· Create a REG_EXPAND_SZ key and name it "LastUsedSource"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList\Media]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList\Net] – Same location as the last used source

§ sourcelist_classsesroot.reg

[HKEY_CLASSES_ROOT\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList]

· Create a REG _SZ key and name it "PackageName”

· Create a REG_EXPAND_SZ key and name it "LastUsedSource"

[HKEY_CLASSES_ROOT\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList\Media]

[HKEY_CLASSES_ROOT\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList\Net]

· We needed to change the last used source

· We copied the SQL install package from C:\WINNT\Installer\fcf451f1.msi to D:\msde\SqlRun01\SqlRun01.msi

· We edited the registry files to change the last used source to point to D:\msde\

· We merged the two registry files sourcelist_HKLM.reg and sourcelist_classsesroot.reg to our existing registry

· We checked the two registry locations for the newly added entries :

· HKEY_CLASSES_ROOT\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList

· HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\9FFFB5B555D9FA543909AAD41C4CEEEF\SourceList

· We were able to run setup again successfully

The Why and how:

To understand how these two registry locations can wreak havoc on a seemingly simple installation needs some background information.

HKEY_CLASSES_ROOT\Installer\Products\GUID\SourceList HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\GUID\SourceList

These entries were created when the first version of MSDE was installed and SourceList’ ideally should point to the MSDE installation package (the corresponding .msi file). When this is missing the service pack setup would not have the access path to the .msi and hence will silently exit.

  
 Regards,
Amrutha Varshini J
Support Engineer, Microsoft SQL Server.
 Reviewed By, 
Sudarshan Narasimhan, TL, Microsoft SQL Server