11

/的文档有点混乱。对于,它指出:ififdef<?if [expression] ?>

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

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

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

我需要做什么才能获得相当于普通 c 预处理器的功能:

#ifdef MY_ENVIRONMENT_VARIABLE

在维克斯?

4

2 回答 2

20

在节中引用环境变量的正确方法ifdef是:

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

这按预期工作。

于 2012-04-17T10:44:48.097 回答
5
<Condition Message="Missing Environment Variable Message Goes Here"><![CDATA[%envvargoeshere]]></Condition>

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

于 2014-10-28T11:30:21.363 回答