我在program.wxs
文件下面的代碼片段:爲什麼我的ifndef部分不工作?
<?ifndef $(var.TwoOnly) ?>
<Feature Id="FeatureOne" ... >
...
</Feature>
<?endif ?>
<?ifndef $(var.OneOnly) ?>
<Feature Id="FeatureTwo" ... >
...
</Feature>
<?endif ?>
我編譯這個使用下面的COMAND:
candle -dOneOnly=1 program.wxs
望着編譯program.wixobj
,我可以看到,具有兩個的聲明所有在那裏,並在運行light
後,列出了這兩個功能,並且安裝程序的功能與完全沒有設置OneOnly
或TwoOnly
一樣。爲什麼我的ifndef
模塊無法正常工作?
注:我也有以下幾點:
<?ifdef $(var.OneOnly) ?>
<?define productName = One Only ?>
<?else?>
<?ifdef $(var.TwoOnly) ?>
<?define productName = Two Only ?>
<?else?>
<?define productName = Both ?>
<?endif?>
<?endif?>
的名字,即使OneOnly
編譯期間設置,顯示爲Both
。
編輯
我已經降低了我的病情複雜到the documentation顯示的最小情況下:
<?ifndef $(var.TwoOnly) ?>
<?include featureOne.wxi ?>
<?endif?>
這仍然無法正常工作。
如果你在代碼中定義一個變量而不是通過命令行傳遞值,它會工作嗎?你是否真的嘗試了WiX.chm的例子? – 2012-04-10 15:05:07
如果我在代碼中定義它不起作用。我從來沒有嘗試'.chm'的例子,但我會去... – fredley 2012-04-10 16:18:30