2009-12-10 40 views
5

Tôi đang cố gắng để tìm một giải pháp cho các vấn đề sau:Bootstrapper: Kiểm tra xem msi phiên bản được cài đặt trước khi chạy

tôi có nhiều chương trình (cho phép gọi họ là nô lệ) rằng tất cả dựa vào một chương trình duy nhất (master) . Tôi cần phải phân phối một trình cài đặt cho mỗi nô lệ. Trình cài đặt này cần cài đặt chương trình chính.

Tôi muốn có thể phiên bản cả hai phần, vì vậy nhiều msi có vẻ là giải pháp phù hợp, bị xích với bootstrapper.

Vấn đề của tôi là nếu trình cài đặt nô lệ cài đặt cùng phiên bản của chương trình chính đã được cài đặt, tệp .msi sẽ chạy trong chế độ sửa/xóa.

Điều này là không thể chấp nhận được từ quan điểm của người dùng và sẽ chỉ gây nhầm lẫn.

Có cách nào để kiểm tra phiên bản của các thiết bị hiện đang được cài đặt trước khi thử chạy msi không?

Tôi hiện đang sử dụng setup.exe của WIX làm bootstrapper.

Bất kỳ giải pháp khác đánh giá rất cao (Tôi cũng đã thử module kết hợp với không thành công, kể từ khi phiên bản là vô dụng)

Trả lời

1

Thay vì sử dụng setupbld.exe (mà tôi không thực sự biết như tôi không thể tìm thấy bất kỳ tài liệu) bạn có thể sử dụng generatebootstrapper task của msbuild. Tài liệu wix đã bao gồm cách sử dụng tác vụ này để tạo bootstrapper cài đặt .NET framework. Xem How To: Install the .NET Framework Using a Bootstrapper. Điều này làm cho việc sử dụng các gói bootstrapper được xác định trước.

Tuy nhiên, trong trường hợp này, bạn cũng sẽ phải tạo gói bootstrapper của riêng mình. Một cách để làm điều này là nghiên cứu các gói bootstrapper hiện có trong C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ (hoặc các gói trong số Windows SDK) và đọc số documentation of the Bootstrapper Manifest XML format. Công cụ bootstrapper generator cũng có thể hữu ích.

Để xác định xem gói có cần được cài đặt hay không, bạn có thể sử dụng một trong số InstallChecks để đặt thuộc tính, sau đó kiểm tra giá trị thuộc tính trong InstallCondition dưới phần tử Commands.

Nếu bạn đang nghĩ rằng điều này khó hơn là — Tôi đồng ý, nhưng đó là những gì tôi đã sử dụng cho đến thời điểm này. Có một số lựa chọn thay thế mà tôi đã không cố gắng nào:

  • sự kém tên dotNetInstaller mà thực sự là một máy phát điện bootstrapper chung mục đích .
  • bootstrapper wix 3.5 burn chưa được phát hành. Tôi không chắc nó có ở trong trạng thái có thể sử dụng hay không.
+1

Tôi đã kết thúc bằng cách sử dụng dotNetInstaller, và nhận thấy rằng mặc dù không hoàn hảo, nhưng tốt hơn là sử dụng Microsoft boostrappers (không thể khiến chúng hoạt động như thế nào). Cho đến nay mọi thứ tôi đã cố gắng làm với dotNetInstaller đều đã hoạt động. Mặc dù đôi khi nó cần một chút hướng dẫn. – gollumullog

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