私はprogram.wxs
ファイルに次のスニペットている:私は、次のCOMAND使用して、これをコンパイルしていifndefセクションが機能しないのはなぜですか?
<?ifndef $(var.TwoOnly) ?>
<Feature Id="FeatureOne" ... >
...
</Feature>
<?endif ?>
<?ifndef $(var.OneOnly) ?>
<Feature Id="FeatureTwo" ... >
...
</Feature>
<?endif ?>
:、私は見ることができます
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の例を文字通り試しましたか? –
私はコードで定義してもうまくいきません。私は '.chm'の例を文字通り試していませんが、私は行くつもりです。 – fredley