2009-02-11 36 views
8

Tengo un cliente que está teniendo problemas con nuestro instalador .msi para nuestra aplicación. WiX se usó para crear este instalador. La aplicación se ha instalado muy bien en docenas de otras máquinas, pero en su máquina muestra el mensaje:Problemas con el paquete de Windows Installer

Este paquete de instalación no se pudo abrió. Póngase en contacto con el proveedor de la aplicación para verificar que se trata de un paquete de instalación de Windows válido.

Mi conjetura es que es una de estas dos posibilidades:

  1. La versión de Windows Installer en la máquina del cliente no está actualizado.
  2. El .msi que tiene podría estar dañado.

¿Cuál es la posibilidad más probable, o hay otras posibilidades que no conozco?

Creo que he vuelto a crear el problema del usuario. Si, desde una consola de comandos, corro MyFile.msi, después de cargar correctamente, entonces me sale esto en el archivo de registro:

=== Verbose logging started: 2/12/2009 10:34:38 Build type: SHIP UNICODE 4.00.6001.00 Calling process: C:\Windows\System32\msiexec.exe === 
MSI (c) (F4:04) [10:34:38:795]: Resetting cached policy values 
MSI (c) (F4:04) [10:34:38:795]: Machine policy value 'Debug' is 0 
MSI (c) (F4:04) [10:34:38:795]: ******* RunEngine: 
      ******* Product: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi 
      ******* Action: 
      ******* CommandLine: ********** 
MSI (c) (F4:04) [10:34:38:802]: Machine policy value 'DisableUserInstalls' is 0 
MSI (c) (F4:04) [10:34:38:830]: Note: 1: 1402 2: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 3: 2 
MSI (c) (F4:04) [10:34:39:140]: SOFTWARE RESTRICTION POLICY: Verifying package --> 'C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi' against software restriction policy 
MSI (c) (F4:04) [10:34:39:141]: Note: 1: 2262 2: DigitalSignature 3: -2147287038 
MSI (c) (F4:04) [10:34:39:141]: SOFTWARE RESTRICTION POLICY: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi is not digitally signed 
MSI (c) (F4:04) [10:34:39:142]: SOFTWARE RESTRICTION POLICY: C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi is permitted to run at the 'unrestricted' authorization level. 
MSI (c) (F4:04) [10:34:39:189]: Cloaking enabled. 
MSI (c) (F4:04) [10:34:39:190]: Attempting to enable all disabled privileges before calling Install on Server 
MSI (c) (F4:04) [10:34:39:197]: End dialog not enabled 
MSI (c) (F4:04) [10:34:39:197]: Original package ==> C:\Users\kelley\Downloads\PixelActiveCityScape_v1_6_Demo.msi 
MSI (c) (F4:04) [10:34:39:197]: Package we're running from ==> C:\Users\kelley\AppData\Local\Temp\40a3581.msi 
. 
. 
. 

Sin embargo, si me quedo msiexec/i MyFile.msi/l * v MyLog.txt, me sale esto:

=== Verbose logging started: 2/12/2009 10:32:19 Build type: SHIP UNICODE 4.00.6001.00 Calling process: C:\Windows\sy 
stem32\msiexec.exe === 
MSI (c) (FC:F0) [10:32:19:597]: Resetting cached policy values 
MSI (c) (FC:F0) [10:32:19:597]: Machine policy value 'Debug' is 0 
MSI (c) (FC:F0) [10:32:19:597]: ******* RunEngine: 
      ******* Product: .\PixelActiveCityScape_v1_6_Demo.msi 
      ******* Action: 
      ******* CommandLine: ********** 
MSI (c) (FC:F0) [10:32:19:599]: Note: 1: 2203 2: .\PixelActiveCityScape_v1_6_Demo.msi 3: -2147287038 
MSI (c) (FC:F0) [10:32:19:600]: MainEngineThread is returning 2 
=== Verbose logging stopped: 2/12/2009 10:32:19 === 

y esto muestra este cuadro de diálogo:

este paquete de instalación no podría ser abierto. Verifique que el paquete exista y que puede acceder a él o contacte al proveedor de la aplicación al verifique que este sea un paquete de instalación de Windows válido.

Parece un problema de permisos, pero no estoy muy seguro de por qué y cómo puedo solucionarlo. ¿Tengo que firmar digitalmente el archivo .msi?

Respuesta

12

Antecedentes:

he notado exactamente el mismo mensaje cuando un archivo de instalación MSI no se ha descargado por completo, o fue corrompido por mi programa antivirus, o se ha mezclado por mi cliente FTP.

El mensaje de error proviene realmente del msiexec.exe, que es el programa ejecutable del sistema Windows Installer que realmente interpreta los archivos del instalador MSI e instala el software en el equipo del cliente.


para comprobar la integridad del archivo MSI:

Calcular la suma md5 de un conocido buena copia de su archivo de instalación MSI con algo así como md5.exe. Haga que el cliente haga lo mismo por su copia, y luego compare los hashes.Si los resultados son diferentes, entonces la copia del archivo instalador MSI del cliente está positivamente corrupta.


Por ejemplo:

en su final:

 
C:\Documents and Settings\yourbox\Desktop>md5.exe AcroRead.msi 
C587C739666E26B2A9B1F5BBAF358808 AcroRead.msi 

en el extremo del cliente:

 
C:\Documents and Settings\theclient\Desktop>md5.exe AcroRead.msi 
90AFFBD9A1954EC9FF029B7AD7183A16 AcroRead.msi 
+0

buena idea acerca de la verificación MD5 . –

+1

Creé una utilidad de GUI para verificar hashes cuando me encontré con este problema hace un tiempo. Puede encontrarlo aquí si está interesado: http://www.binaryfortress.com/hashtools/ –

+0

Esa es una buena herramienta, Jon T. ¡Gracias! – eleven81

4

usted podría tratar de iniciar el MSI en la línea de comandos y obtenga un archivo de registro.

así: MSI: msiexec/i (filename.msi)/l * v (filename.txt)

5

Este mensaje de error es lanzada por msiexec si detecta que el archivo MSI está dañado. Puede hacerlo porque todos los archivos MSI tienen una suma de comprobación, y algunos incluso están firmados digitalmente.

Dicha corrupción de archivos MSI desafortunadamente sucede mucho. No solo por las conexiones de red escamosas durante la descarga, sino más a menudo por los escáneres de virus que interfieren con la descarga en sí; si intentan "desinfectar" la secuencia de datos, terminará con una MSI corrupta.

La única manera de solucionar esto es volviendo a descargar el archivo MSI, y quizás deshabilite el antivirus/firewall para esa descarga. Puede verificar si hay virus después de que el archivo MSI se haya guardado en el disco antes de intentar instalarlo.

7

Me encontré con este problema ("MainEngineThread está retornando 2") también. Este hilo fue útil para reducir el problema, pero no lo he resuelto del todo.

En nuestro caso, sospechamos que el problema está relacionado con BitLocker y/o llamando a msiexec con rutas relativas (como "msiexec/i .. \ foo.msi"). Ejecutando ".. \ foo.msi" funciona directamente, ejecutar "msiexec/i foo.msi" en la carpeta correcta también funciona.

Quizás estas pistas ayuden a alguien más. En nuestro caso, cambiaremos la estructura del directorio para evitar el "..".

+0

Buen punto sobre la ruta relativa. Parece que a msiexec.exe no le gustan las rutas relativas. –

+1

Gracias. Este es un comportamiento muy contrario a la intuición. Esto me ahorró mucha frustración. –

1

Si alguien está desarrollando un nuevo instalador y se encuentra con este mismo error, verifique el tipo de salida del proyecto Bootstrapper. Agregué un nuevo proyecto de Bootstrapper y copié en un montón de código conocido. El tipo de salida del proyecto se establece por defecto en MSI, y cuando intento probarlo, recibí un "MainEngineThread is returning 2" idéntico y la misma línea anterior.

Establezca el tipo de salida en su EXE apropiado y funciona perfectamente.

+0

Casi no me deslicé lo suficiente para leer esto. +1 –

0

enter image description here

Solución: 1) ejecutar el cmd como administrador, 2) F: \ SOFTWARE> msiexec/i-nodo V4.5.0-x64.msi

+0

solución de 100% de trabajo. –

Cuestiones relacionadas