2012-04-07 40 views
8

Tôi đang sử dụng WiX để cài đặt MSI để gọi một trình cài đặt MSI khác.Trình cài đặt MSI gọi một trình cài đặt MSI khác ở chế độ im lặng bằng WiX

  • Tôi có thể giải quyết tình huống này ở chế độ UILevel = 5 (Giao diện người dùng đầy đủ). Giải pháp của tôi là thêm một CustomAction vào bảng UISequence gọi một MSI khác. Nó sẽ không nhận được mã lỗi 1500: "Một cài đặt khác đã được tiến hành ..."
  • Nhưng ở chế độ chậm, UILevel = 2, tôi không thể làm điều đó, bởi vì nó chỉ chạy CustomAction trong ExecuteSequence. Làm thế nào tôi có thể chạy MSI trong chế độ im lặng và gọi một trình cài đặt MSI khác?

Trả lời

1

Nói đúng cách các tệp MSI là trình cài đặt giao dịch để chúng chỉ có thể xảy ra một lần tại một thời điểm.

Microsoft giải quyết vấn đề này với các mô đun hợp nhất giống như MSI nhưng được sử dụng để nhúng trong các tệp MSI.

Bất kỳ cơ hội nào MSI bạn muốn nhúng có thể được thay đổi thành tệp MSM?

+0

Tôi đã nghĩ giải pháp này. Nó có nghĩa là con MSI nhúng vào cơ sở dữ liệu của cha mẹ MSI. Nhưng tôi không thể sử dụng giải pháp này bởi vì con tôi MSI có thể thay đổi sau khi biên dịch thời gian, phụ huynh MSI chỉ có thể gọi nó thông qua CustomAction. – Klaus

-1

Bạn có thể thử khởi chạy MSI thứ hai với hành động tùy chỉnh không đồng bộ bị trì hoãn, không có kiểm tra mã trả về, được lên lịch sau khi InstallFinalize hành động chuẩn. Bằng cách này, hành động tùy chỉnh sẽ được khởi chạy khi hành động đầu tiên đã hoàn tất cài đặt.

+1

Lỗi sẽ xảy ra nếu chúng tôi lên lịch biểu này. Lỗi 2762: Không thể lên lịch hoạt động. Hành động phải được lên lịch giữa InstallInitialize và InstallFinalize. – Klaus

+0

Tôi quên một hành động tùy chỉnh hoãn lại không thể được lên lịch sau khi InstallFinalize. Tuy nhiên, bạn có thể thử ngay trước nó, sau khi InstallExecute. –

7

Cài đặt cả hai MSI với Burn bootstrapper đi kèm với wix 3.6.

+1

Tôi hiểu rằng "Burn bootstrapper" sẽ giải quyết các vấn đề tiên quyết (NET 35, Java ...). Nó thích hợp với "Msi gọi khác msi bởi hành động tùy chỉnh" vấn đề? Dù sao, đó là cách duy nhất cho tôi bây giờ. Hy vọng nó có thể được thực hiện! Cảm ơn ngài! – Klaus

+0

@klaus: từ liên kết tôi đưa ra trong câu trả lời của tôi ở trên: "Gói cũng cho phép các ứng dụng hoặc bộ ứng dụng rất lớn được chia thành các gói cài đặt hợp lý nhỏ hơn trong khi vẫn trình bày một sản phẩm cho người dùng cuối". –

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