Wix 为什么我的ifndef部分不起作用?
我的Wix 为什么我的ifndef部分不起作用?,wix,conditional-compilation,Wix,Conditional Compilation,我的program.wxs文件中有以下代码段: <?ifndef $(var.TwoOnly) ?> <Feature Id="FeatureOne" ... > ... </Feature> <?endif ?> <?ifndef $(var.OneOnly) ?> <Feature Id="FeatureTwo" ... > ...
program.wxs
文件中有以下代码段:
<?ifndef $(var.TwoOnly) ?>
<Feature Id="FeatureOne" ... >
...
</Feature>
<?endif ?>
<?ifndef $(var.OneOnly) ?>
<Feature Id="FeatureTwo" ... >
...
</Feature>
<?endif ?>
查看编译后的程序.wixobj
,我可以看到Feature Two的声明都在那里,运行light
后,这两个功能都被列出,安装程序的功能就像没有设置OneOnly
或twonly
一样。为什么我的ifndef
块不能正常工作
注:我还有以下几点:
<?ifdef $(var.OneOnly) ?>
<?define productName = One Only ?>
<?else?>
<?ifdef $(var.TwoOnly) ?>
<?define productName = Two Only ?>
<?else?>
<?define productName = Both ?>
<?endif?>
<?endif?>
这仍然不起作用 使用
ifdef
或ifndef
时,必须在不使用$(变量)
语法的情况下声明变量
<?ifndef TwoOnly ?>
<?include featureOne.wxi ?>
<?endif?>
这是可行的。如果在代码中定义变量而不是通过命令行传递值,是否可行?你试过WiX.chm中的例子吗?如果我在代码中定义,它就不起作用了。我没有尝试过
.chm
示例,但我会尝试一下。。。
<?ifndef $(var.TwoOnly) ?>
<?include featureOne.wxi ?>
<?endif?>
<?ifndef TwoOnly ?>
<?include featureOne.wxi ?>
<?endif?>