2012-04-17 3 views
9

documentation для if/ifdef немного сбивает с толку. Для <?if [expression] ?>, говорится:Как проверить наличие переменной окружения?

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

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

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

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

#ifdef MY_ENVIRONMENT_VARIABLE 

в Wix?

+0

Примечание: '' Не работает самостоятельно. – fredley

ответ

16

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

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

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

+1

Это работает для компиляции, но как насчет проверки времени выполнения? – Cymon

+0

@Cymon http://stackoverflow.com/questions/3459998/get-an-environment-variable-into-a-wix-property?answertab=active#tab-top – Azimuth

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

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

Смежные вопросы