2009-02-11 3 views
8

У меня есть клиент, у которого есть проблемы с нашим установщиком .msi для нашего приложения. WiX использовался для создания этого установщика. Приложение устанавливается нормально на десятки других машин, но на своей машине он отображает сообщение:Проблемы с пакетом установщика Windows

Этот установочный пакет не может быть открыт . Обратитесь к поставщику приложения , чтобы убедиться, что это действительный пакет установщика Windows .

Я думаю, что это одна из этих двух возможностей:

  1. Версия установщика Windows на компьютере клиента устарело.
  2. .msi, он может быть поврежден.

Какая вероятность, или есть другие возможности, о которых я не знаю?

Я думаю, что я воссоздал проблему пользователя. Если из командной оболочки, я бегу MyFile.msi, то она успешно загружает, то я получаю это в лог-файле:

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

Однако, если я бегу Msiexec/я MyFile.msi/л * v mylog.txt, я получаю это:

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

И это показывает, что это диалоговое окно:

этот установочный пакет не может быть открыт. Убедитесь, что существует пакет , или что вы можете получить к нему доступ, или обращайтесь к поставщику приложения в , убедитесь, что это действительный пакет установщика Windows .

Так что это похоже на проблему с разрешениями, но я не совсем уверен, почему и как я могу это исправить. Возможно, мне придется подписать цифровой файл .msi?

ответ

12

фона:

я заметил точно такое же сообщение, когда файл установщика MSI не был загружен полностью, или был поврежден мой антивирусной программы, или был искажаются мой FTP клиент.

Сообщение об ошибке на самом деле происходит от msiexec.exe, что является исполняемой программой системы установщика Windows, которая фактически интерпретирует файлы установщика MSI и устанавливает программное обеспечение на целевую машину (ы) клиента.


Для проверки целостности файла MSI:

Вычислить MD5sum из заведомо исправной копии вашего файла установки MSI, используя что-то вроде md5.exe. Попросите клиента сделать то же самое для его копии, а затем сравните хеши.Если результаты отличаются друг от друга, то клиентская копия файла установщика MSI является положительно поврежденной.


Например:

На вашем конце:

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

На конец клиента:

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

Хорошая идея о проверке md5 , –

+1

Я создал утилиту GUI для проверки хэшей, когда я столкнулся с этой проблемой некоторое время назад. Вы можете найти его здесь, если вам интересно: http://www.binaryfortress.com/hashtools/ –

+0

Это хороший инструмент, Джон Т. Спасибо! – eleven81

4

Вы можете попытаться запустить MSI в командной строке и получить файл журнала.

так: MSI: Msiexec/я (Filename.MSI)/л * v (Filename.txt)

5

Это сообщение об ошибке брошенной Msiexec, если он обнаружит, что файл MSI поврежден. Он может это сделать, потому что все файлы MSI имеют контрольную сумму, а некоторые даже имеют цифровую подпись.

Такое повреждение файлов MSI, к сожалению, случается очень часто. Не только из-за нечетких сетевых подключений при загрузке, но чаще всего с помощью антивирусных сканеров, которые мешают загрузке - если они пытаются «дезинформировать» поток данных, вы получите поврежденную MSI.

Единственный способ исправить это - перезагрузить файл MSI и, возможно, отключить антивирусный сканер/брандмауэр для этой загрузки. Вы можете проверить наличие вирусов после сохранения файла MSI на диске, прежде чем пытаться его установить.

7

Я столкнулся с этой проблемой («MainEngineThread возвращает 2»). Этот поток был полезен для сужения проблемы, но я не полностью ее разрешил.

В нашем случае мы подозреваем, что проблема связана с BitLocker и/или вызовом msiexec с относительными путями (например, msiexec/i .. \ foo.msi). Запуск «.. \ foo.msi» напрямую работает, работает «msiexec/i foo.msi» в соответствующей папке.

Возможно, эти подсказки помогут кому-то еще. В нашем случае мы изменим структуру каталогов, чтобы избежать «..».

+0

Хороший вопрос об относительном пути. Похоже, msiexec.exe не любит относительные пути. –

+1

Спасибо. Это очень противоречивое поведение. Это избавило меня от разочарования. –

1

Если кто-то разрабатывает новый установщик и сталкивается с этой же ошибкой, проверьте тип вывода проекта Bootstrapper. Я добавил новый проект Bootstrapper и скопировал кучу хорошо известного кода. Тип вывода проекта по умолчанию соответствует MSI, и при попытке его протестировать я получил идентичный «MainEngineThread возвращает 2» и ту же самую предыдущую строку.

Установите выходной тип в соответствующий EXE, и он отлично работает.

+0

Я почти не прокрутил вниз достаточно далеко, чтобы прочитать это. +1 –

0

enter image description here

Решение: 1) запустить CMD в качестве администратора, 2) F: \ Softwares> Msiexec/я узел-v4.5.0-x64.msi

+0

100% рабочее решение. –

Смежные вопросы