我在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