2009-02-11 14 views
8

Ho un client che ha problemi con il nostro programma di installazione .msi per la nostra applicazione. WiX è stato utilizzato per creare questo programma di installazione. L'applicazione ha installato bene su decine di altre macchine, ma sulla sua macchina viene visualizzato il messaggio:Problemi con il pacchetto di Windows Installer

Questo pacchetto di installazione non poteva essere aperto. Contattare il fornitore dell'applicazione per verificare che questo sia un pacchetto di installazione Windows valido.

La mia ipotesi è che si tratta di una di queste due possibilità:

  1. La versione di Windows Installer sul computer del cliente non è aggiornato.
  2. Il .msi che ha potrebbe essere danneggiato.

Qual è la possibilità più probabile o ci sono altre possibilità di cui non sono a conoscenza?

Penso di aver ricreato il problema dell'utente. Se, da una shell di comando, corro MyFile.msi, quindi viene caricato con successo, allora ottengo questo nel file di 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 
. 
. 
. 

Tuttavia, se corro msiexec/i MyFile.msi/l * v myLog.txt, ottengo questo:

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

e questo dimostra questa finestra di dialogo:

questo pacchetto di installazione non potrebbe essere più aperto. Verificare che il pacchetto esista e che sia possibile accedervi oppure contattare il fornitore dell'applicazione su per verificare che questo sia un pacchetto di installazione Windows valido.

Quindi sembra un problema di autorizzazioni, ma non sono esattamente sicuro del perché e del modo in cui posso risolverlo. Devo forse firmare digitalmente il file .msi?

risposta

12

Background:

ho notato la stessa identica messaggio quando un file di installazione MSI non è stato scaricato completamente, o è stato danneggiato dal mio programma antivirus, o è stato straziato dal mio client FTP.

Il messaggio di errore è in realtà in arrivo da msiexec.exe, che è il programma eseguibile del sistema Windows Installer che interpreta effettivamente i file di installazione MSI e installa il software sulla destinazione del/i computer del cliente.


per controllare l'integrità del file MSI:

calcolare la MD5sum di un noto buona copia del file di installazione MSI usando qualcosa come md5.exe. Chiedi al cliente di fare la stessa cosa per la sua copia, quindi confronta gli hash.Se i risultati sono diversi, la copia del file di installazione MSI del client è corrotta positivamente.


Per esempio:

da parte vostra:

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

Sulla fine del cliente:

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

buona idea circa la verifica MD5 . –

+1

Ho creato un'utilità GUI per controllare gli hash quando mi sono imbattuto in questo problema qualche tempo fa. Puoi trovarlo qui se sei interessato: http://www.binaryfortress.com/hashtools/ –

+0

Questo è uno strumento utile, Jon T. Grazie! – eleven81

4

si potrebbe tentare di avviare il MSI nella riga di comando e ottieni un file di registro.

in questo modo: MSI: msiexec/i (filename.msi)/l * v (FileName.txt)

5

Questo messaggio di errore viene generato da msiexec se rileva che il file MSI è danneggiato. Può farlo perché tutti i file MSI hanno un checksum, e alcuni addirittura sono firmati digitalmente.

Tale corruzione dei file MSI sfortunatamente accade molto. Non solo a causa delle fasulle connessioni di rete durante il download, ma più spesso degli scanner di virus che interferiscono con il download stesso - se provano a "disinfettare" il flusso di dati, finirai con un MSI corrotto.

L'unico modo per risolvere questo problema è di scaricare nuovamente il file MSI e forse disabilitare il programma antivirus/firewall per quel download. È possibile verificare la presenza di virus dopo che il file MSI è stato salvato su disco prima di provare a installarlo.

7

Ho riscontrato questo problema ("MainEngineThread restituisce 2"). Questo thread è stato utile per limitare il problema, ma non l'ho risolto completamente.

Nel nostro caso, sospettiamo che il problema sia relativo a BitLocker e/o alla chiamata a msiexec con percorsi relativi (come "msiexec/i .. \ foo.msi"). L'esecuzione di ".. \ foo.msi" funziona direttamente, l'esecuzione di "msiexec/i foo.msi" nella cartella corretta funziona anche.

Forse questi indizi aiuteranno qualcun altro. Nel nostro caso, cambieremo la struttura delle directory per evitare il "..".

+0

Buon punto sul percorso relativo. Sembra che a msiexec.exe non piacciano i percorsi relativi. –

+1

Grazie. Questo è un comportamento molto contro-intuitivo. Questo mi ha fatto risparmiare molta frustrazione. –

1

Se qualcuno sta sviluppando un nuovo programma di installazione e trova lo stesso errore, controllare il tipo di output del progetto Bootstrapper. Ho aggiunto un nuovo progetto Bootstrapper e copiato in un gruppo di codice noto. Il tipo di output del progetto è impostato su MSI e, quando si tenta di testarlo, ho ricevuto un identico "MainEngineThread restituisce 2" e la stessa riga precedente.

Impostare il tipo di output sul relativo EXE appropriato e funziona benissimo.

+0

Quasi non scorrevo abbastanza lontano da leggere questo. +1 –

0

enter image description here

Soluzione: 1) eseguire il cmd come amministratore, 2) F: \ SOFTWARE> msiexec/i node-v4.5.0-x64.msi

+0

Soluzione di lavoro al 100%. –

Problemi correlati