wix无法在检测条件中使用字符串

时间:2017-02-08 12:13:54

标签: wix

我正在使用WIX安装程序来生成exe,直到现在一切正常但现在我需要在exe包中添加一个检测条件,如下所示。

<ExePackage 
  Id="AccessRuntime2013" 
  DetectCondition="((MsAccessInstalled = Outlook.Application.15) AND (MSOffice2013RuntimeInstalled = 0))" >

MsAccessInstalled是一个存储Outlook版本的变量,MSOffice2013RuntimeInstalled是一个检查是否安装了访问运行时的变量。两个变量都设置正确。

只有在未安装MsAccessInstalled =“Outlook.Application.15”并且未安装MSOffice2013RuntimeInstalled时,才必须运行此exe。如果我将这两个条件分开运行,那么它可以正常工作它会将错误消息显示为Failed to parse condition "((MsAccessInstalled = Outlook.Application.15) AND (MSOffice2013RuntimeInstalled = 0))". Unexpected character at position。请帮忙。

1 个答案:

答案 0 :(得分:0)

将DetectCondition更改为

时会发生什么
<ExePackage 
  Id="AccessRuntime2013" 
  DetectCondition="MsAccessInstalled ~= &quot;Outlook.Application.15&quot; AND MSOffice2013RuntimeInstalled = 0" 
  ... />

您还可以在引导程序中制作一些测试util:Condition标记来测试您的条件。

<util:Condition Message="MSAccessInstalled condition failed">MsAccessInstalled ~= &quot;Outlook.Application.15&quot;</Condition>
<util:Condition Message="MSOffice2013RuntimeInstalled condition failed">MSOffice2013RuntimeInstalled = 0</Condition>

运行引导程序并查看是否有任何条件失败。一旦您完成测试,请记得删除这些条件,因为如果投入生产它们会导致问题。