wix - 如何比较WiX中的注册表版本?

标签 wix

在我的wix安装程序中,我想检查ESRI ArcMap的版本,可以通过以下方式找到它:

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

我想从10开始,我尝试通过使用以下条件来完成它:
<Condition Message="ArcGIS Desktop 10 or 10.1 must be installed"><![CDATA[ARC10INSTALLED AND ARC10INSTALLED >= "10.0.0"]]></Condition>

但这似乎不起作用,有什么建议吗?

最佳答案

RegistrySearch元素返回的值取决于@Type属性值以及注册表中该值的数据类型。因此,如果您将raw指定为Type属性的值,则得到的结果很可能包含特定的前缀。例如,如果它是REG_BINARY,您将获得带有#前缀的值。您应该在比较操作中考虑这一点。

特别是对于字符串比较,我将使用子字符串运算符supported by the MSI condition syntax。它支持“开始于”,“结束于”和“包含”,这似乎是在ARC10INSTALLED属性中接收的值中的某处识别值10.的最佳方法。

关于wix - 如何比较WiX中的注册表版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7245152/

相关文章:

wix - 是否可以对 .msi 和包装它的 WiX bundle 使用相同的 UpgradeCode

wix - 我可以确保组件安装顺序吗?

wix - 有条件地将单个 WiX 属性设置为不同的值

c# - 如何为 .NET 项目创建自定义 Wix 安装程序?

listbox - 在 wix 安装程序中填充列表框

WIX 安装文件,覆盖

dialog - InstallValidate 对话框中的应用程序名称与 ARP 中的应用程序名称不同

wix - Bootstrap 应用程序回滚

dialog - 如何使用 WIX 自定义对话框窗口图标?

WiX、UAC、托管自定义操作和模拟