2011-08-30 34 views
8

Trong cài đặt wix của tôi, tôi muốn kiểm tra phiên bản của ESRI ArcMap mà tôi có thể tìm theo:Làm cách nào để so sánh các phiên bản đăng ký trong WiX?

<Property Id="ARC10INSTALLED"> 
    <RegistrySearch Id="Arc10Search" Root="HKLM" Key="SOFTWARE\ESRI\ArcGIS" Name="RealVersion" Type="raw" /> 
</Property> 

Tôi muốn bắt đầu với 10 và tôi đã cố gắng hoàn thành nó bằng cách sử dụng điều kiện này:

<Condition Message="ArcGIS Desktop 10 or 10.1 must be installed"><![CDATA[ARC10INSTALLED AND ARC10INSTALLED >= "10.0.0"]]></Condition> 

Nhưng điều đó dường như không hoạt động, bất kỳ đề xuất nào?

Trả lời

10

Giá trị trả về bởi phần tử RegistrySearch phụ thuộc vào giá trị thuộc tính @Type, cũng như trên kiểu dữ liệu của giá trị đó trong sổ đăng ký. Do đó, trong trường hợp bạn chỉ định raw làm giá trị thuộc tính Type, kết quả bạn sẽ nhận được rất có thể sẽ chứa một tiền tố nhất định. Ví dụ: nếu là REG_BINARY, bạn sẽ nhận được giá trị được bắt đầu bằng #. Bạn nên xem xét điều này trong các hoạt động so sánh.

Đối với so sánh chuỗi cụ thể, tôi sẽ sử dụng toán tử chuỗi con supported by the MSI condition syntax. Nó hỗ trợ 'bắt đầu bằng', 'kết thúc bằng' và 'chứa', trông giống như cách tốt nhất để xác định giá trị của bạn 10. ở đâu đó trong giá trị bạn nhận được trong thuộc tính ARC10INSTALLED.

+2

'Bắt ​​đầu bằng' là chính xác những gì đã hoạt động. Cảm ơn! Và chỉ để ghi lại những gì tôi đã sử dụng:

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