2011-01-14 38 views
6

Tôi đang sử dụng Wix 3.x và người dùng có thể chọn thư mục đích. My Setup.wxs hiện đang ở đây: http://pastebin.com/uH1EjbDQWix - Thư mục cài đặt tùy chỉnh

Cách đơn giản nhất để yêu cầu người dùng cho một thư mục đích tùy chỉnh là gì? (INSTALLDIR/TARGETDIR ?!) Tôi đã thấy ví dụ trong đó mọi người xây dựng các trang hộp thoại riêng nhưng điều này không thực sự cần thiết, phải không?

Cập nhật:

Khi tôi thêm

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR"/> 
<UIRef Id="WixUI_InstallDir" /> 

sau <UIRef Id="WixUI_Mondo" /> nhưng trước khi </Product> tôi nhận được lỗi sau:

The primary key 'ExitDialog/Finish/EndDialog/Return/1' is duplicated in table 'ControlEvent'. Please remove one of the entries or rename a part of the primary key to avoid the collision. (LGHT0130) - C:\delivery\Dev\wix30_public\src\ext\UIExtension\wixlib\WixUI_Mondo.wxs:44

Bây giờ khi tôi loại bỏ <UIRef Id="WixUI_Mondo" /> tôi có thể xây dựng các thiết lập . Nhưng hộp thoại "Choose Setup Type" (Complete, Typical, Custom) không được hiển thị nữa. Và một điều kỳ lạ khác: Đôi khi một hộp thoại bật lên, nói rằng nó tính toán không gian đĩa (nó có nút hủy), nhưng cuối cùng nó không bao giờ tự đóng lại. Khi tôi đóng nó, tôi vẫn có thể tiếp tục. Có cách nào để sửa lỗi này một cách đơn giản không?

Xin cảm ơn, Philip

Trả lời

9

Yếu tố UIRef đề cập đến một trong những chuỗi giao diện người dùng chuẩn được cung cấp bởi WiX:

  • WixUI_Mondo
  • WixUI_Advanced
  • WixUI_FeatureTree
  • WixUI_InstallDir
  • WixUI_Minimal

Bạn chỉ có thể sử dụng một của các trình tự này trong trình cài đặt của bạn. Mỗi một trong số này có một bộ hộp thoại. Để biết thông tin về những hộp thoại nào được bao gồm trong mỗi chuỗi này, thì WiX wiki có tổng quan tốt.

WixUI_Mondo cho phép người dùng chỉ định thư mục cài đặt nếu họ chọn cài đặt Tùy chỉnh. Chỉ WixUI_Mondo cho phép người dùng chọn cài đặt điển hình, tùy chỉnh hoặc hoàn chỉnh.

Cách đơn giản nhất để cho phép người dùng chọn thư mục cài đặt là sử dụng chuỗi hộp thoại WixUI_InstallDir.

Trình cài đặt riêng của SharpDevelop sử dụng trình tự thoại WixUI_FeatureTree.

Vì vậy, nếu một trong các bộ hộp thoại tiêu chuẩn do WiX cung cấp không phải là những gì bạn muốn, bạn có thể xem customising the dialog sequence. Tạo hộp thoại tùy chỉnh của riêng bạn thường là phương sách cuối cùng.

+0

Xin chào Matt, cảm ơn vì câu trả lời toàn diện này! – Philip

0

Liên kết này giải thích cách thực hiện theo cách đơn giản.

link UIRef

+0

Cảm ơn câu trả lời của bạn, câu trả lời vẫn không hoạt động như mong đợi. Nhưng tôi đã cập nhật câu hỏi của mình. – Philip

0

IsWiX hỗ trợ tính năng này. Hãy xem tại địa chỉ:

IsWiXMerges.wxs

IsWiXInstaller.wxs

Bí quyết là tôi đang sử dụng một thư mục tên là INSTALLLOCATION cùng với một UIRef của WiXUI_ *. Đây là những gì WiXUI sử dụng tương tự như cách InstallShield sử dụng INSTALLDIR và Visual Studio sử dụng TARGETDIR.

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