如何检查环境变量的存在?

时间:2012-04-17 09:44:51

标签: wix environment-variables conditional-compilation

if / ifdef的{​​{3}}略有混淆。对于<?if [expression] ?>,它声明:

  
      
  • 变量可用于检查是否存在   ......
  •   
  • 如果变量不存在,评估将失败并且将引发错误。
  •   

事实证明,如果你去:<?if $(env.MY_VAR) ?>并且MY_VAR未定义,编译将失败。我如何检查存在?

通常,这是使用ifdef的地方,但这些在Wix中也很奇怪。他们不使用$(var.Variable)语法,而是使用<?ifdef Variable?>,这意味着无法以这种方式检查 environment 变量。

我需要做些什么来获得正常的c预处理器:

#ifdef MY_ENVIRONMENT_VARIABLE
在威克斯?

2 个答案:

答案 0 :(得分:17)

ifdef部分中引用环境变量的正确方法是:

<?ifdef env.MY_VAR?>
  ...
<?endif?>

这可以按预期工作。

答案 1 :(得分:5)

<Condition Message="Missing Environment Variable Message Goes Here"><![CDATA[%envvargoeshere]]></Condition>

将上述元素放在wxs文件的Package元素中。 如果环境变量不存在,安装将在运行时(安装时)失败并显示一条好消息。