Как я могу проверить существование переменной среды?

на документация на if/ifdef немного сбивает с толку. Для <?if [expression] ?> говорится:

  • переменные могут использоваться для проверки существования
    ...
  • если переменная не существует, оценка не удастся, и возникнет ошибка.

оказывается, если вы просто идете:<?if $(env.MY_VAR) ?> и MY_VAR не определено, компиляция завершится ошибкой. Как мне проверить существование?

обычно здесь можно использовать ifdef, но они странно работают и в Wix. Вместо использования $(var.Variable) синтаксис, они используют <?ifdef Variable?>, что означает окружающая среда переменные не могут быть проверены таким образом.

что мне нужно сделать, чтобы получить эквивалент обычного процессора c:

#ifdef MY_ENVIRONMENT_VARIABLE

в Викс?

2 ответов


правильный способ ссылки на переменные среды в ifdef разделы:

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

это работает, как ожидалось.


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

поместите вышеуказанный элемент в элемент пакета файла wxs. Установка завершится ошибкой во время выполнения (время установки) с приятным сообщением, если переменная среды не существует.