将文件添加到Wix安装程序(如果存在)

时间:2016-12-07 19:54:32

标签: wix components conditional-statements preprocessor-directive

我正在尝试在我的主wxs文件中向安装程序添加一个文件。

    <ComponentGroup Id="Files" Directory="Bin">
        <?if $(var.FILE_EXISTS) = "true"?>
            <Component>
                <Condition>$(var.FILE_EXISTS) = "true"</Condition>
                <File Source="$(var.SourceDir)/file.txt"/>
            </Component>
    </ComponentGroup>

我通过带有-d选项

的candle.exe传递FILE_EXISTS

但它没有生效。它没有被添加。当我没有条件(只是File元素)时,它可以工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

据我了解,您所谈论的条件是构建时条件。基本上,您希望控制有问题的文件是否进入MSI包。

如果这是正确的,则<Condition>下的<Component>元素就是一个错误。这是安装时条件,只影响文件的安装。

另一个是纯语法问题。 <?if?>指令必须具有关闭元素。

考虑到上述情况,您的代码段可能如下所示:

<ComponentGroup Id="Files" Directory="Bin">
  <?if $(var.FILE_EXISTS) = "true"?>
  <Component>
    <File Source="$(var.SourceDir)/file.txt"/>
  </Component>
  <?endif?>
</ComponentGroup>