SQL Server 2008 R2 – Error code: 1605

Yet another post on SQL Server 2008 R2 deployment woes.

An unattended installation of SQL Server 2008 R2 – developer/management tools on Windows XP SP3 clients in this particular case – might fail with the following error:

MsiGetProductInfo failed to retrieve ProductVersion for package with Product Code = '{0A869A65-8C94-4F7C-A5C7-972D3C8CED9E}'. Error code: 1605.

The error appears in Summary_%computername%_%date%_%time%_ComponentUpdate.txt and other log files as described here: View and Read SQL Server Setup Log Files.

Error 1605

This record of Windows Installer error codes on MSDN lists 1605 incorrectly as an indicator for not enough free space available on the target drive; DesktopEngineer.com however, states that 1605 designates a missing product, required to complete a custom action successfully:

1605 ERROR_UNKNOWN_PRODUCT This action is only valid for products that are currently installed.

Windows Installer GUIDs

In order to figure out what missing product might be the culprit, we’ll check a working installation for the GUID specified in the error message.

Windows Installer GUIDs have a different formatting than how they appear in the MSI tables. In this specific case, the product code {0A869A65-8C94-4F7C-A5C7-972D3C8CED9E} needs to be transformed into its equivalent which is stored in the registry.

Some swapping and reversing needs to be done:

  1. Reverse the first 8 digits
  2. Reverse the next 4 digits
  3. Reverse the next 4 digits
  4. Reverse the next 2 digits (8 times)
  5. Drop all hyphens

Applying the above transformation to {0A869A65-8C94-4F7C-A5C7-972D3C8CED9E} results in 56A968A049C8C7F45A7C79D2C3C8DEE9. Search for the value in the registry and soon MSXML appears to be the wrongdoer.

MSXML6

Now back to the client where the installation fails. Repeat the same search and you’ll probably notice that XML 6.0 Parser actually is present on the erroneous machine too, confirmed by the XML Parser entry found in appwiz.cpl.

Reinstallation of MSXML6 is the first next thing that comes to an IT guy’s mind. Unfortunately, the uninstall might fail with an exotic error. If this is the case, as a last resort other than swiping the client completely, the Windows Installer Clean Up Utility (a Microsoft tool which has been retired – in other words use at own risk) can forcefully remove installed products.

However, even after deleting MSXML6 entirely using msicuu.exe and reinstalling Microsoft XML Parser available here, the setup of SQL Server 2008 R2 still fails with the same error.

Solution

Trial and error to the rescue. So by means of elimination, the following simple solution appears to be fairly effective.

Delete the registry key’s parent containing 56A968A049C8C7F45A7C79D2C3C8DEE9 in HKLM\Software\Classes\Installer\UpgradeCodes. In this particular case, deleting the 7AB711B11CB5E91428E0D7F4F314C2B7 key first, results in a successful installation of SQL Server 2008 R2 afterwards:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\UpgradeCodes\7AB711B11CB5E91428E0D7F4F314C2B7]
"56A968A049C8C7F45A7C79D2C3C8DEE9"=""

Microsoft often moves in mysterious ways.

Advertisements

8 Responses to SQL Server 2008 R2 – Error code: 1605

  1. Pingback: SQL Server 2008 R2 – Version’s parameters must be greater than or equal to zero « IT. Tech. Internet.

  2. Pingback: SQL Server 2008 R2 – The performance counter registry hive is corrupted. « IT. Tech. Internet.

  3. Sunil Verma says:

    I had to go through the entire registry, not just the HKEY_CLASSES_ROOT but it ultimately worked for me. Thanks!

  4. To solve the problem I wrote a small software to remove all the key from the registry
    holding the string “SQL Server” into value . It has been a risk but finally it works.
    write me ill’send y the exe

  5. Alistair Baird says:

    After having heaps of trouble with someone else’s attempt’s to fix, the whoel SQL programme folder had been deleted by the user in an attempt to remove SQL. There wer eregistr yentries etc still saying it was there. After trying several ways and reg cleaners to remove the entries, I came upon your blog. Using the principle of reversing the digits and removing the registry entries, I was eventually able to to install SQL again. It took several attempts, each time it installed, it would produce a different GUID, but by reversing them and removing the entries, we got there.

  6. coraxtreme says:

    why its stil eror 1605.. whats wrong.. first i have try deleting that registry and i restart my pc, and instal again the error say invoke or beginInvoke… so i create temp folder on (c:\) and the eror invoke is clear but.. in instal sql stil eror 1605 and produce different GUILD ? i try it several times but stil eror..

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: