Error Number: 1635 (Unable to install Windows Installer MSP file)

 

Cuando un componente de SQL Server 2005 se actualiza, se crean unos archivos “Windows installer patch” en cache, ocultos en la carpeta C:\Windows\Installer. Cuando un parche posterior se instala, el instalador busca el registro para encontrar el nivel de versión actual y a continuación busca los archivos creados (.msp). Cuando estos archivos no se encuentran o están corruptos, el instalador no puede instalar ninguna versión posterior. Además, no se puede desinstalar la versión actual. Volver a ejecutar el instalador de la versión actual no recrea los archivos.

Por ejemplo, cuando se produce este problema durante la instalación de los Database Services, el error en el Summary.txt será reflejado de la siguiente manera:

Product : SQL Server Database Services 2005 (MSSQLSERVER)

Product Version (Previous): 3200

Product Version (Final) :

Status : Failure

Log File : D:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\Hotfix\SQL9_Hotfix_KB949095_sqlrun_sql.msp.log

Error Number : 1635

Error Description : Unable to install Windows Installer MSP file

 

Workaround:

Abre el hotfix log del instalador de los Database Services (SQL9_Hotfix_KB949095_sqlrun_sql.msp.log):

MSI (s) (C8:5C) [15:32:29:468]: Couldn't find local patch 'D:\WINDOWS\Installer\42f480ea.msp'. Looking for it at its source.

MSI (s) (C8:5C) [15:32:29:468]: Resolving Patch source.

MSI (s) (C8:5C) [15:32:29:468]: User policy value 'SearchOrder' is 'nmu'

MSI (s) (C8:5C) [15:32:29:468]: User policy value 'DisableMedia' is 0

MSI (s) (C8:5C) [15:32:29:468]: Machine policy value 'AllowLockdownMedia' is 0

MSI (s) (C8:5C) [15:32:29:468]: SOURCEMGMT: Media enabled only if package is safe.

MSI (s) (C8:5C) [15:32:29:484]: SOURCEMGMT: Looking for sourcelist for product {4A35EF4A-D868-4B15-A84D-3E8925AA9558}

MSI (s) (C8:5C) [15:32:29:484]: SOURCEMGMT: Adding {4A35EF4A-D868-4B15-A84D-3E8925AA9558}; to potential sourcelist list (pcode;disk;relpath).

MSI (s) (C8:5C) [15:32:29:484]: SOURCEMGMT: Now checking product {4A35EF4A-D868-4B15-A84D-3E8925AA9558}

El código del hotfix del archivo 42f480ea.msp que falta es: {4A35EF4A-D868-4B15-A84D-3E8925AA9558}

Este código esta codificado, y no se puede utilizar directamente para localizar el archivo .msp en el registro.

Para determinar el código real, abre el registro (regedit) y ve a:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches]
Selecciona todas las subclaves contenidas en la clave Patches, y verifica qué clave contiene un valor que se llama LocalPackage y tiene una referencia al archivo .msp que buscamos ('D:\WINDOWS\Installer\42f480ea.msp').

La ruta y el valor aparecen como:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\A4FE53A4868D51B48AD4E39852AA5985]

Class Name: <NO CLASS>

Last Write Time: 11/6/2008 - 2:29 PM

Value 0

  Name: LocalPackage

  Type: REG_SZ

  Data: D:\WINDOWS\Installer\42f480ea.msp

Ahora, conocemos el código real del archivo: A4FE53A4868D51B48AD4E39852AA5985

Luego, necesitamos determinar que hotfix contiene el archivo .msp que falta.

Abre la clave: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products]

Abre todos los códigos de la clave Products y todas las subclaves Patches hasta encontrar la clave que contiene el código real del hotfix (A4FE53A4868D51B48AD4E39852AA5985).

En nuestro ejemplo, el código del hotfix se encuentra en:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\B29A3732C1C117E44B49C59AF769AA91\Patches\A4FE53A4868D51B48AD4E39852AA5985]

Cuando se selecciona este código del hotfix en la sección izquierda del registro, se podrá ver el DisplayName en la sección derecha. El DisplayName indicara que SQL Service Pack o Hotfix contiene el archive Windows Installer Patch que falta.

En nuestro ejemplo:

  Name: DisplayName

  Type: REG_SZ

Data: Service Pack 2 for SQL Server Database Services 2005 ENU (KB921896)

Por lo tanto necesitamos bajar el “Service Pack 2 para SQL Server Database Services 2005 ENU (KB921896)” de nuevo y extraerlo a nuestro servidor. El comando para extraer el paquete de instalación Service Pack 2 a una carpeta llamada 'ExtractSQL2005SP2' es:

>SQLServer2005SP2-KB921896-x86-ENU.exe /x:c:\ExtractSQL2005SP2

Y por ultimo necesitamos localizar el archivo .msp en el paquete de instalación extraído que necesitamos copiar a

D:\WINDOWS\Installer.

Cada componente SQL tendrá un archivo .msp distinto. En nuestro ejemplo, tenemos un error 1635 para el SQL Server Database Services. Por lo tanto necesitamos copiar sqlrun_sql.msp.

Consulte la siguiente lista de nombres de archivos restantes y los correspondientes componentes SQL:

sqlrun_sql.msp -> Database Services

sqlrun_as.msp -> Analyses Services

sqlrun_dts.msp -> Data Transformation Services

sqlrun_ns.msp -> Notification Services

sqlrun_rs.msp -> Reporting Services

sqlrun_tools.msp -> Tools and Workstation Components

Entonces solo falta renombrar sqlrun_sql.msp a 42f480ea.msp (ver SQL9_Hotfix_KB949095_sqlrun_sql.msp.log) y copiar el archivo a D:\WINDOWS\Installer. Ahora podemos empezar de nuevo la instalación del hotfix.

 

 

- Paul Gruner.