2012-04-17 48 views
9

documentation對於if/ifdef略有混淆。對於<?if [expression] ?>,它指出:如何檢查環境變量的存在性?

  • 變量可以用來檢查是否存在
    ...
  • 如果變量不存在,評估將失敗和錯誤將得到提升。

事實證明,如果你只是去:<?if $(env.MY_VAR) ?>MY_VAR沒有定義,編譯將失敗。我如何檢查存在?

通常,這是一個使用ifdef的地方,但這些工作在Wix中也很奇怪。而不是使用$(var.Variable)語法,它們使用<?ifdef Variable?>,意思是環境變量不能用這種方式檢查。

什麼我需要做的就是正常的C預處理器相當於:

#ifdef MY_ENVIRONMENT_VARIABLE 
在維克斯

+0

注意:'<?ifdef MY_ENVIRONMENT_VARIABLE?>'不能自行工作。 – fredley 2012-04-17 10:02:56

回答

16

引用在ifdef部分環境變量正確的方法是:

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

可正常工作。

+1

這適用於編譯時,但運行時檢查呢? – Cymon 2014-10-27 17:49:29

+0

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

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

將上述元素放在wxs文件的Package元素中。 如果環境變量不存在,安裝將在運行時(安裝時)失敗並顯示一條好消息。