Error de Windows Installer al intentar actualizar a RU1 o RU2 de Exchange 2007 SP2 versión Española
Hola a todos,
Tras la disponibilidad de la actualización a RU1 y RU2 de Exchange 2007 SP2, nos hemos encontrado con bastantes casos de errores en la instalación que solo aparecen en la versión en Español. En concreto se recibe el siguiente mensaje de error:
The upgrade patch cannot be installed by the Windows installer service because the program to be upgraded may be missing, or the upgrade patch may update a different version of the program.
Verify the the program to be upgraded exists on your computer and that you have the correct upgrade patch
Este error se encuentra reportado al grupo de producto de Exchange y en estos momentos se trabaja para su corrección.
El problema viene derivado de un valor incorrecto en el msi de instalación del SP2 en lenguaje Español, que indica que dicho paquete está instalado en idioma Ingles en vez de Español. En concreto la porpiedad incorrecta es la ProductLanguage que tiene un valor de 1033.
Por esta razón, cuando se intenta aplicar el RU1 o RU2, Windows Installer detecta dicha discrepancia y detiene la instalación.
Como workaround se puede ejecutar un script que localice el msi correspondiente a la instalación del SP2 y modifique dicha propiedad estableciéndola a un valor de 3082 (Español)
El procedimiento para aplicar el script sería el siguiente:
1.- Hacer logon con un usuario administrador de dominio y por tanto administrador local del servidor de Exchange.
2.- Copiar el contenido del script que se adjunta en un fichero de texto y renombrarlo a, por ejemplo script.vbs
3.- Abrir una ventana ms-dos (cmd) y situarnos en el directorio en el que hemos copiado el script
4.- Ejecutar el script con la siguiente línea de comandos
cscript script.vbs
5.- Deberían aparecer en pantalla la lista de paquetes msi instalados y el script debería detectar el msi correspondiente al SP2 y debería indicar que se ha modificado la propiedad ProductLanguage.
6.- Si todo es correcto probar a lanzar el setup del RU1 o RU2 y verificar que no se produzca el error de Windows Installer.
7.- Seguir con la instalación y verificar que todo es correcto.
SCRIPT
=======
'***********************************************************************
' These sample scripts are not supported under any Microsoft standard
' support program or service.
' The sample scripts are provided as it is without warranty of any kind.
' Microsoft further disclaims all implied warranties including, without
' limitation, any implied warranties of merchantability or of fitness
' for a particular purpose.
' The entire risk arising out of the use or performance of the sample
' scripts and documentation remains with you. In no event shall
' Microsoft, its authors, or anyone else involved in the creation,
' production, or delivery of the scripts be liable for any damages
' whatsoever (including, without limitation, damages for loss of
' business profits, business interruption, loss of business information,
' or other pecuniary loss) arising out of the use of or inability to use
' the sample scripts or documentation, even if Microsoft has been
' advised of the possibility of such damages.
'***********************************************************************
Const msiOpenDatabaseModeReadOnly = 0
Const msiOpenDatabaseModeTransact = 1
' Scan arguments for valid SQL keyword and to determine if any update operations
Dim openMode
openMode = msiOpenDatabaseModeReadOnly
openMode = msiOpenDatabaseModeTransact
' Connect to Windows installer object
Dim installer
Set installer = Nothing
Set installer = Wscript.CreateObject("WindowsInstaller.Installer")
CheckError
' Enumerate all products
Dim products
Set products = installer.Products
Dim productCode
Dim location
Set location = Nothing
Dim exchproductCode
exchproductCode = "{24B2C164-DE66-44FE-B468-A46D9D5E6B31}"
For Each productCode in products
WScript.Echo "ProductCode = " & productCode
location = installer.ProductInfo (productCode, "LocalPackage")
If productcode = exchproductCode Then
WScript.Echo "**********************"
WScript.Echo "ProductCode = " & productcode
WScript.Echo "Location = " & location
ChangeLanguage()
End If
Next
Wscript.Quit 0
Sub ChangeLanguage
' Open the database
Dim databasePath
databasePath = location
Dim database
Set database = installer.OpenDatabase(databasePath, openMode)
CheckError
WScript.Echo "DatabasePath = " & databasePath
'Delete the existing ProductLanguage Property then added it back as 3082, Spanish
Dim view
Set view = database.OpenView("Delete from Property where Property = 'ProductLanguage'")
view.Execute
wscript.echo "Property ProductLanguage removed"
Set view = database.OpenView("INSERT INTO Property (Property,Value) VALUES ('ProductLanguage',3082)")
view.Execute
wscript.echo "Property ProductLanguage added as 3082, Spanish"
database.Commit
End Sub
Sub CheckError
Dim message, errRec
If Err = 0 Then Exit Sub
message = Err.Source & " " & Hex(Err) & ": " & Err.Description
If Not installer Is Nothing Then Set errRec = installer.LastErrorRecord
If Not errRec Is Nothing Then message = message & vbLf & errRec.FormatText
Fail message
End Sub
Sub Fail(message)
Wscript.Echo message
Wscript.Quit 2
End Sub
Esperamos que este script os pueda servir de ayuda.
Saludos.
Ramón de Diego Perdiz.
Comments
Anonymous
March 05, 2010
Sencillamente increible vuestro Script... A la primera, llevo semanas con el error y sin resultados positivos.Anonymous
March 22, 2010
El script funciona perfectamente. Me ha corregido tanto los installer del servidor como los de las estaciones de trabajo que tengo con las admin tools. Desde el rollup 1 en diciembre 2009 estaba pendiente de este problema. Ahora ya tengo el rollup 2 instalado. Gracias por todo y hasta luego.Anonymous
April 15, 2010
No llegué a probar este script pues esperaba a que saliera una solución "oficial" para no tener que después arreglar los enlaces que dejaban de funcionar. Aunque en ningún sitio del blog he visto que lo comentéis, anteayer salió la RU4 para exchange 2007 SP2 que específicamente arregla este problema que tenía la RU1, RU2 (y también la RU3 aunque no se mencione). Supongo que estaría bien un comentario por vuestra parte para que la gente lo supiera sin tener que profundizar en este post. Os dejo la URL del RU4: http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=b8f7f872-16d5-49d6-9867-adc01351c06f Saludos. P.D. Este comentario no quiere decir que no os esté agradecido por aportar, al menos, una solución temporal al problema.