我的program.wxs
文件中有以下代码段:
<?ifndef $(var.TwoOnly) ?>
<Feature Id="FeatureOne" ... >
...
</Feature>
<?endif ?>
<?ifndef $(var.OneOnly) ?>
<Feature Id="FeatureTwo" ... >
...
</Feature>
<?endif ?>
我正在使用以下命令编译它:
candle -dOneOnly=1 program.wxs
查看已编译的program.wixobj
,我可以看到 Feature Two 的声明都在那里,并且在运行之后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
.
编辑
我已将条件的复杂性降低到文档中显示的最小情况:
<?ifndef $(var.TwoOnly) ?>
<?include featureOne.wxi ?>
<?endif?>
这仍然不起作用。