tôi đã cố gắng giải pháp Krzysztof của (ở trên) - nhưng trên một số máy khi sử dụng phương pháp này, nó đã không được phát hiện chính xác khi họ đã làm không có cài đặt Sql Express.
Có vẻ như do việc xử lý sai giá trị đăng ký REG_MULTI_SZ InstalledInstances?
Vì tôi đã kiểm tra xem liệu có cần dừng/khởi động lại dịch vụ Sql Server Express trong trình cài đặt hay không, nên tôi chỉ kiểm tra thay vào đó - vì vậy đây là lựa chọn thay thế của tôi, nơi tôi chỉ kiểm tra dịch vụ thay thế:
<Property Id="SQLEXPRESSINSTALLED" >
<RegistrySearch Id="IsSqlExpressServiceInstalled" Root="HKLM" Key="SYSTEM\CurrentControlSet\services\MSSQL$SQLEXPRESS" Name="Description" Type="raw" Win64="no"/>
</Property>
<Condition Message="Express Not Installed">SQLEXPRESSINSTALLED</Condition>
<Condition Message="Express Installed">NOT SQLEXPRESSINSTALLED</Condition>
Bit của một hack, nhưng dường như làm việc tốt đủ cho khách hàng của chúng tôi (đã sử dụng các điều kiện trong thành phần, chứ không phải sau đó các điều kiện ví dụ Launch hiển thị ở trên)
Hoàn hảo, chỉ cần nhấn cùng một vấn đề. Lúc đầu, tôi nghĩ rằng nó sẽ không hoạt động cho trường hợp có cả SQL Server Standard & Express được cài đặt, nhưng sau đó nhận thấy "><" mà sau một chút đào tôi phát hiện có nghĩa là trái có quyền, kỳ quặc tôi không thể tìm thấy đề cập đến điều hành biểu thức điều kiện được đề cập trong tài liệu Wix, nhưng đã tìm thấy nó ở đây: http://www.tramontana.co.hu/wix/lesson6.php. – Bittercoder
Bạn sẽ không tìm thấy giá trị InstalledInstance trên phiên bản Windows 64 bit. – jmayor
bạn cần thay đổi thành Wow6432Node thay vì HKLM \ SOFT .. \ MSFT .. – jmayor