2009-02-11 33 views
8

Tôi có một khách hàng đang gặp sự cố với trình cài đặt .msi cho ứng dụng của chúng tôi. WiX đã được sử dụng để tạo trình cài đặt này. Ứng dụng đã cài đặt tốt trên hàng chục máy khác, nhưng trên máy của mình, nó hiển thị thông báo:Sự cố với gói Trình cài đặt Windows

Gói cài đặt này không thể mở được . Liên hệ với nhà cung cấp ứng dụng để xác minh rằng đây là Gói cài đặt Windows hợp lệ.

tôi đoán là nó là một trong hai khả năng sau đây:

  1. Các phiên bản của Windows Installer trên máy tính của khách hàng là hết hiệu lực.
  2. .msi anh ấy có thể bị hỏng.

Khả năng có khả năng nhất là gì, hoặc có khả năng nào khác mà tôi không biết?

Tôi nghĩ rằng tôi đã tạo lại sự cố của người dùng. Nếu, từ một vỏ lệnh, tôi chạy MyFile.msi, sau đó nó tải thành công, sau đó tôi có được điều này trong file log:

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

Tuy nhiên, nếu tôi chạy msiexec/i MyFile.msi/l * v mylog.txt, tôi có được điều này:

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

Và điều này cho thấy hộp thoại này:

gói cài đặt này không thểĐã mở. Xác minh rằng gói tồn tại và bạn có thể truy cập hoặc liên hệ với nhà cung cấp ứng dụng để xác minh rằng đây là gói cài đặt Windows hợp lệ.

Vì vậy, có vẻ như vấn đề về quyền, nhưng tôi không chắc chắn lý do tại sao và cách tôi có thể khắc phục. Tôi có thể phải ký điện tử tệp .msi không?

Trả lời

12

Bối cảnh:

tôi đã nhận thấy thông điệp chính xác tương tự khi một tập tin cài đặt MSI không được tải xuống hoàn toàn, hoặc bị hỏng bởi một chương trình chống virus của tôi, hoặc bị hỏng do các client FTP của tôi.

Thông báo lỗi thực sự đến từ msiexec.exe, là chương trình thực thi của hệ thống Windows Installer thực sự diễn giải các tệp trình cài đặt MSI và cài đặt phần mềm trên máy của khách hàng.


Để kiểm tra tính toàn vẹn của tập tin MSI:

Tính md5sum của một bản sao được biết đến-tốt của tập tin cài đặt MSI của bạn sử dụng một cái gì đó giống như md5.exe. Yêu cầu khách hàng làm điều tương tự cho bản sao của mình, và sau đó so sánh các băm.Nếu kết quả khác nhau, thì bản sao của trình cài đặt MSI của khách hàng bị hỏng tích cực.


Ví dụ:

On cuối cùng của bạn:

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

Vào cuối của khách hàng:

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

tốt ý tưởng về việc kiểm tra md5 . –

+1

Tôi đã tạo một tiện ích GUI để kiểm tra băm khi gặp sự cố này trong một thời gian trước. Bạn có thể tìm thấy nó ở đây nếu bạn quan tâm: http://www.binaryfortress.com/hashtools/ –

+0

Đó là một công cụ tốt, Jon T. Cảm ơn! – eleven81

4

Bạn có thể thử để bắt đầu MSI trong dòng lệnh và nhận tệp nhật ký.

như vậy: MSI: msiexec/i (Filename.MSI)/l * v (filename.txt)

5

Thông báo lỗi này được ném bởi msiexec nếu nó phát hiện rằng các tập tin MSI là hỏng. Nó có thể làm điều đó bởi vì tất cả các tập tin MSI đều có tổng kiểm tra, và một số thậm chí được ký điện tử.

Sự tham nhũng của tệp MSI không may xảy ra rất nhiều. Không chỉ vì các kết nối mạng không ổn định khi tải xuống, mà thường là do máy quét vi-rút gây trở ngại cho bản tải xuống - nếu chúng cố gắng 'khử trùng' luồng dữ liệu, bạn sẽ kết thúc với MSI bị hỏng.

Cách duy nhất để khắc phục điều này là tải xuống lại tệp MSI và có thể tắt trình quét vi-rút/tường lửa để tải xuống đó. Bạn có thể kiểm tra vi-rút sau khi tệp MSI được lưu trên đĩa trước khi bạn cố cài đặt nó.

7

Tôi cũng gặp sự cố này ("MainEngineThread cũng đang trở về 2"). Chủ đề này rất hữu ích để thu hẹp vấn đề, nhưng tôi đã không giải quyết triệt để nó.

Trong trường hợp của chúng tôi, chúng tôi nghi ngờ vấn đề có liên quan đến BitLocker và/hoặc gọi msiexec với đường dẫn tương đối (chẳng hạn như "msiexec/i .. \ foo.msi"). Chạy ".. \ foo.msi" hoạt động trực tiếp, chạy "msiexec/i foo.msi" trong thư mục thích hợp cũng hoạt động.

Có thể những manh mối này sẽ giúp người khác. Trong trường hợp của chúng tôi, chúng tôi sẽ thay đổi cấu trúc thư mục để tránh "..".

+0

Điểm tốt về đường dẫn tương đối. Có vẻ như nó msiexec.exe không thích đường dẫn tương đối. –

+1

Cảm ơn. Đây là một hành vi rất trực quan. Điều này đã cứu tôi rất nhiều thất vọng. –

1

Nếu có ai đang phát triển trình cài đặt mới và gặp lỗi này, hãy kiểm tra loại kết xuất dự án Bootstrapper của bạn. Tôi đã thêm một dự án Bootstrapper mới và được sao chép trong một loạt các mã đã biết. Kiểu đầu ra của dự án mặc định là MSI, và khi thử kiểm tra nó, tôi nhận được một "MainEngineThread giống hệt 2" và cùng dòng trước đó.

Đặt loại kết xuất thành EXE phù hợp và nó hoạt động rất tốt.

+0

Tôi hầu như không di chuyển xuống đủ xa để đọc. +1 –

0

enter image description here

Giải pháp: 1) chạy cmd như người quản trị, 2) F: \ PHẦN MỀM> msiexec/i nút-v4.5.0-x64.msi

+0

100% giải pháp làm việc. –

Các vấn đề liên quan