fre*_*ley 2 wix conditional-compilation
我的program.wxs文件中有以下代码段:
<?ifndef $(var.TwoOnly) ?>
<Feature Id="FeatureOne" ... >
...
</Feature>
<?endif ?>
<?ifndef $(var.OneOnly) ?>
<Feature Id="FeatureTwo" ... >
...
</Feature>
<?endif ?>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令编译它:
candle -dOneOnly=1 program.wxs
Run Code Online (Sandbox Code Playgroud)
望着编译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?>
Run Code Online (Sandbox Code Playgroud)
即使OneOnly在编译期间设置,该名称也显示为Both.
编辑
我已将条件的复杂性降低到文档中显示的最小情况:
<?ifndef $(var.TwoOnly) ?>
<?include featureOne.wxi ?>
<?endif?>
Run Code Online (Sandbox Code Playgroud)
这仍然不起作用.
使用ifdefor时ifndef,必须在没有 $(var.)语法的情况下声明变量.
<?ifndef TwoOnly ?>
<?include featureOne.wxi ?>
<?endif?>
Run Code Online (Sandbox Code Playgroud)
这有效.