2009-02-11 11 views
8

Mam klienta, który ma problemy z naszym instalatorem .msi dla naszej aplikacji. Do utworzenia tego instalatora użyto WiX. Aplikacja zainstalowała się dobrze na kilkudziesięciu innych urządzeniach, ale na swoim komputerze wyświetla komunikat:Problemy z pakietem Instalatora Windows

Ten pakiet instalacyjny nie może być otwarty pod . Skontaktuj się z dostawcą aplikacji , aby sprawdzić, czy jest to prawidłowy pakiet instalacyjny systemu Windows .

Domyślam się, że jest to jeden z tych dwóch możliwości:

  1. wersja Instalatora Windows na komputerze klienta jest nieaktualne.
  2. .msi może być uszkodzony.

Jaka jest najbardziej prawdopodobna możliwość, czy są inne możliwości, o których nie wiem?

Myślę, że odtworzyłem problem użytkownika. Jeżeli z powłoki poleceń, biegnę MyFile.msi, to z powodzeniem ładuje, a następnie uzyskać to w pliku dziennika:

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

Jednakże, jeśli biegnę msiexec/i MyFile.msi/l * v mylog.txt, otrzymuję to:

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

I to pokazuje to okno dialogowe:

Ten pakiet instalacyjny nie mógł być otwarty. Sprawdź, czy pakiet istnieje i czy masz do niego dostęp, lub skontaktuj się z dostawcą aplikacji pod numerem , aby sprawdzić, czy jest to prawidłowy pakiet Instalatora systemu Windows .

Wygląda na to, że mam problem z uprawnieniami, ale nie jestem do końca pewien, dlaczego i jak mogę to naprawić. Czy być może muszę podpisać cyfrowo plik .msi?

Odpowiedz

12

Tło:

zauważyłem dokładnie ten sam komunikat, kiedy plik instalatora MSI nie został pobrany w całości, lub został uszkodzony przez mój program antywirusowy lub został zniekształcone przez mojego klienta FTP.

Komunikat o błędzie faktycznie pochodzi z msiexec.exe, który jest programem wykonywalnym systemu Instalatora Windows, który faktycznie interpretuje pliki instalatora MSI i instaluje oprogramowanie na docelowym komputerze klienta.


Aby sprawdzić integralność pliku MSI:

Oblicz md5sum znanej-dobrej kopii pliku instalatora MSI za pomocą czegoś takiego md5.exe. Poproś klienta, aby zrobił to samo dla swojej kopii, a następnie porównaj hasze.Jeśli wyniki są różne, to kopia pliku instalatora MSI klienta jest uszkodzona.


Na przykład:

Na koniec:

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

Na koniec klienta:

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

Dobry pomysł o czeku md5 . –

+1

Utworzyłem narzędzie GUI do sprawdzania skrótów, gdy jakiś czas temu wpadłem na ten problem. Możesz go znaleźć tutaj, jeśli jesteś zainteresowany: http://www.binaryfortress.com/hashtools/ –

+0

To jest dobre narzędzie, Jon T. Dzięki! – eleven81

4

można spróbować zacząć MSI w wierszu poleceń i uzyskaj plik dziennika.

tak: MSI: msiexec/I (Filename.MSI)/l * v (nazwa_pliku.txt)

5

Ten komunikat jest generowany przez msiexec jeśli wykryje, że plik MSI jest uszkodzony. Może to zrobić, ponieważ wszystkie pliki MSI mają sumę kontrolną, a niektóre nawet są podpisane cyfrowo.

Takie uszkodzenie plików MSI niestety często się zdarza. Nie tylko z powodu niestabilnych połączeń sieciowych podczas pobierania, ale najczęściej przez skanery antywirusowe, które zakłócają pobieranie - jeśli spróbują "odkażić" strumień danych, otrzymasz uszkodzony plik MSI.

Jedynym sposobem na naprawienie tego jest ponowne pobranie pliku MSI, a być może wyłączenie skanera antywirusowego/zapory ogniowej dla tego pobierania. Możesz sprawdzić obecność wirusów po zapisaniu pliku MSI na dysku, zanim spróbujesz go zainstalować.

7

Wpadłem na ten problem ("MainEngineThread wraca 2"). Ten wątek był przydatny, aby zawęzić problem, ale nie rozwiązałem go w pełni.

W naszym przypadku podejrzewamy, że problem jest związany z funkcją BitLocker i/lub wywołaniem msiexeca ze względnymi ścieżkami (takimi jak "msiexec/i .. \ foo.msi"). Działające ".. \ foo.msi" działa bezpośrednio, działa "msiexec/i foo.msi" w odpowiednim folderze.

Może te wskazówki pomogą komuś innemu. W naszym przypadku zmienimy strukturę katalogów, aby uniknąć "..".

+0

Dobra rada dotycząca względnej ścieżki. Wygląda na to, że msiexec.exe nie lubi względnych ścieżek. –

+1

Dzięki. Jest to bardzo sprzeczne z intuicją zachowanie. To zaoszczędziło mi wiele frustracji. –

1

Jeśli ktoś tworzy nowy instalator i napotyka ten sam błąd, sprawdź typ wyjściowy projektu Bootstrapper. Dodałem nowy projekt Bootstrapper i skopiowałem go w pakiecie dobrze znanego kodu. Typ wyjściowy projektu jest domyślnie ustawiony na MSI, a przy próbie jego przetestowania dostałem identyczny "MainEngineThread powraca 2" i ten sam poprzedni wiersz.

Ustaw typ wyjściowy na odpowiedni plik EXE i działa dobrze.

+0

Prawie nie przewinąłem wystarczająco daleko, żeby to przeczytać. +1 –

0

enter image description here

Rozwiązanie: 1) uruchom cmd jako administrator, 2) F: \ OPROGRAMOWANIE> msiexec/i węzeł-v4.5.0-x64.msi

+0

100% roztwór roboczy. –

Powiązane problemy