if
/ ifdef
的{{3}}略有混淆。对于<?if [expression] ?>
,它声明:
- 变量可用于检查是否存在 ......
- 如果变量不存在,评估将失败并且将引发错误。
事实证明,如果你去:<?if $(env.MY_VAR) ?>
并且MY_VAR
未定义,编译将失败。我如何检查存在?
通常,这是使用ifdef
的地方,但这些在Wix中也很奇怪。他们不使用$(var.Variable)
语法,而是使用<?ifdef Variable?>
,这意味着无法以这种方式检查 environment 变量。
我需要做些什么来获得正常的c预处理器:
#ifdef MY_ENVIRONMENT_VARIABLE
在威克斯?
答案 0 :(得分:17)
在ifdef
部分中引用环境变量的正确方法是:
<?ifdef env.MY_VAR?>
...
<?endif?>
这可以按预期工作。
答案 1 :(得分:5)
<Condition Message="Missing Environment Variable Message Goes Here"><![CDATA[%envvargoeshere]]></Condition>
将上述元素放在wxs文件的Package元素中。 如果环境变量不存在,安装将在运行时(安装时)失败并显示一条好消息。