2009-02-11 8 views
8

Ich habe einen Client, der Probleme mit unserer .msi-Installer für unsere Anwendung hat. WiX wurde verwendet, um dieses Installationsprogramm zu erstellen. Die Anwendung ist einfach gut auf Dutzende von anderen Maschinen installiert, aber auf seiner Maschine zeigt es die Meldung:Probleme mit Windows Installer-Paket

Dieses Installationspaket nicht geöffnet werden kann. Wenden Sie sich an den Anwendungshersteller , um zu überprüfen, dass es sich um ein gültiges Windows Installer Package handelt.

Meine Vermutung ist, dass es eine dieser beiden Möglichkeiten ist:

  1. Die Version von Windows Installer auf dem Client-Rechner nicht mehr aktuell ist.
  2. Die MSI, die er hat, könnte beschädigt sein.

Was ist die wahrscheinlichste Möglichkeit, oder gibt es andere Möglichkeiten, die ich nicht bewusst bin?

Ich denke, ich habe das Problem des Benutzers neu erstellt. Wenn von einem Kommando-Shell, ich laufe MyFile.msi, dann erfolgreich lädt es, dann bekomme ich diese in der Protokolldatei:

=== 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 
. 
. 
. 

Wenn ich jedoch msiexec run/i MyFile.msi/l * v mylog.txt, bekomme ich diese:

=== 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 === 

Und dies zeigt dieses Dialogfeld:

dieses Installationspaket nichtsein könntegeöffnet. Stellen Sie sicher, dass das Paket vorhanden ist und Sie darauf zugreifen können, oder wenden Sie sich an den Hersteller der Anwendung an überprüfen Sie, dass dies ein gültiges Windows Installer-Paket ist.

So scheint es ein Problem mit Berechtigungen, aber ich bin mir nicht genau sicher, warum und wie ich es beheben kann. Muss ich die MSI-Datei möglicherweise digital signieren?

Antwort

12

Hintergrund:

ich genau die gleiche Nachricht, wenn eine MSI-Installer-Datei nicht vollständig heruntergeladen wurde bemerkt haben, oder wurde von meinem Antivirus-Programm beschädigt oder wurde von meinem FTP-Client verstümmelt.

Die Fehlermeldung stammt tatsächlich von msiexec.exe, die das ausführbare Programm des Windows Installer-Systems ist, das tatsächlich die MSI-Installer-Dateien interpretiert und die Software auf dem Zielcomputer des Clients installiert.


die Integrität der MSI-Datei zu überprüfen:

die MD5sum einer gute bekannten Berechnen Kopie Ihrer MSI-Installer-Datei so etwas wie md5.exe verwenden. Lassen Sie den Kunden dasselbe für seine Kopie tun und vergleichen Sie dann die Hashes.Wenn die Ergebnisse unterschiedlich sind, ist die Kopie der MSI-Installationsdatei des Clients positiv beschädigt.


Zum Beispiel:

auf Ihrer Seite:

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

auf der Client-Ende:

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

Gute Idee über den md5-Check . –

+1

Ich habe ein GUI-Dienstprogramm erstellt, um Hashes zu überprüfen, als ich vor einiger Zeit auf dieses Problem stieß. Sie können es hier finden, wenn Sie interessiert sind: http://www.binaryfortress.com/hashtools/ –

+0

Das ist ein nettes Werkzeug, Jon T. Danke! – eleven81

4

Sie könnten versuchen, das MSI in der Befehlszeile zu starten und erhalte eine Protokolldatei.

wie so: MSI: msiexec/i (Dateiname.msi)/l * v (filename.txt)

5

Diese Fehlermeldung von msiexec ausgelöst, wenn es erkennt, dass die MSI-Datei beschädigt ist. Dies ist möglich, weil alle MSI-Dateien eine Prüfsumme haben und einige sogar digital signiert sind.

Solche Korruption von MSI-Dateien passiert leider viel. Nicht nur wegen der unsicheren Netzwerkverbindungen beim Herunterladen, sondern meistens auch durch Virenscanner, die den Download selbst stören - wenn sie versuchen, den Datenstrom zu "bereinigen", haben Sie am Ende ein korruptes MSI.

Die einzige Möglichkeit, dies zu beheben, besteht darin, die MSI-Datei erneut herunterzuladen und möglicherweise den Virenscanner/die Firewall für diesen Download zu deaktivieren. Sie können nach dem Speichern der MSI-Datei auf dem Datenträger nach Viren suchen, bevor Sie versuchen, sie zu installieren.

7

Ich stieß auf dieses Problem ("MainEngineThread gibt 2"). Dieser Thread war nützlich, um das Problem einzugrenzen, aber ich habe es nicht vollständig gelöst.

In unserem Fall vermuten wir, dass das Problem mit BitLocker und/oder dem Aufruf von msiexec mit relativen Pfaden (wie "msiexec/i .. \ foo.msi") zusammenhängt. Das Ausführen von ".. \ foo.msi" funktioniert direkt, das Ausführen von "msiexec/i foo.msi" im richtigen Ordner funktioniert ebenfalls.

Vielleicht helfen diese Hinweise jemand anderem. In unserem Fall werden wir die Verzeichnisstruktur ändern, um das ".." zu vermeiden.

+0

Guter Punkt über den relativen Weg. Sieht so aus, als ob msiexec.exe relative Pfade nicht mag. –

+1

Danke. Dies ist ein sehr kontraintuitives Verhalten. Das hat mir viel Frust erspart. –

1

Wenn jemand ein neues Installationsprogramm entwickelt und auf denselben Fehler stößt, überprüfen Sie den Ausgabetyp Ihres Bootstrapper-Projekts. Ich habe ein neues Bootstrapper-Projekt hinzugefügt und in eine Reihe von bekannten Codes kopiert. Der Projektausgabetyp ist standardmäßig MSI, und wenn ich versuche, es zu testen, habe ich ein identisches "MainEngineThread gibt 2 zurück" und die gleiche vorhergehende Zeile.

Legen Sie den Ausgabetyp auf die entsprechende EXE und es funktioniert großartig.

+0

Ich scrolle fast nicht weit genug runter, um das zu lesen. +1 –

0

enter image description here

Lösung: 1) die cmd als Administrator ausführen, 2) F: \ SOFTWARES> msiexec/i-Knoten-v4.5.0-x64.msi

+0

100% Arbeitslösung. –