Cụ thể hơn, tôi muốn kiểm tra xem Oracle ODP.Net đã được cài đặt trên máy hay chưa. Tôi muốn thực hiện việc này bằng cách kiểm tra khóa đăng ký HKLM \ SOFTWARE \ ORACLE \ ODP.NET.Trong WiX làm cách nào để kiểm tra sự tồn tại của khóa đăng ký (không phải giá trị) đối với Oracle ODP.Net
Giá trị thực tế được ODP.Net sử dụng được lưu trữ trong HKLM \ SOFTWARE \ ORACLE \ ODP.NET \ 2.111.6.20 tuy nhiên tôi giả định rằng tên khóa thấp hơn này sẽ thay đổi khi bản cập nhật được phát hành bởi Oracle.
Tôi đã thử những điều sau không thành công, có thể vì giá trị (Mặc định) không thực sự tồn tại hoặc có thể vì nó là rỗng (tôi không chắc chính xác cách nó được thể hiện trong sổ đăng ký).
<Property Id="ORACLE_ODPNET">
<RegistrySearch Id="ODPNET_RegKey" Type="raw" Root="HKLM" Key="SOFTWARE\ORACLE\ODP.NET" Name="(Default)"/>
</Property>
<Condition Message="This setup requires ODP.Net to be installed.">
Installed OR ORACLE_ODPNET
</Condition>
Vì vậy, bất kỳ những điều sau đây sẽ rất hữu ích với tôi:
- Một cách để tìm kiếm một registry key không có giá trị dưới nó.
- Một cách để tìm kiếm một giá trị registry sử dụng một con đường có chứa ký tự đại diện
- Cách tốt hơn để kiểm tra ODP.Net đang được cài đặt
Xin cảm ơn các bạn! tôi đã sử dụng hành động tùy chỉnh như đã được mô tả ở đây: [http://stackoverflow.com/a/1340107][1] [1]: http://stackoverflow.com/a/1340107 – Viktor
Bằng cách lấy giá trị Mặc định, bạn nên bỏ qua thuộc tính Tên. –