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

fre*_*ley 9 wix conditional-compilation environment-variables

文件if/ ifdef略显混乱.因为<?if [expression] ?>,它说:

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

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

通常情况下,这是人们使用的地方ifdef,但这些工作在Wix中也很奇怪.$(var.Variable)他们使用而不是使用语法,这<?ifdef Variable?>意味着不能以这种方式检查环境变量.

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

#ifdef MY_ENVIRONMENT_VARIABLE
Run Code Online (Sandbox Code Playgroud)

在威克斯?

fre*_*ley 17

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

<?ifdef env.MY_VAR?>
  ...
<?endif?>
Run Code Online (Sandbox Code Playgroud)

这按预期工作.


小智 5

<Condition Message="Missing Environment Variable Message Goes Here"><![CDATA[%envvargoeshere]]></Condition>
Run Code Online (Sandbox Code Playgroud)

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