使用WiX将外部文件或后备文件复制到内部文件

时间:2015-01-16 09:25:51

标签: wix wix3.8

正如标题所说,我想安装一个外部文件:

<Component>
    <File Source="Application.exe.config" Compressed="no" />
</Component>

和 - 如果外部文件不可用 - 安装默认的内部文件:

<Component>
    <File Source="Application.exe.default.config" Name="Application.exe.config" />
</Component>

这样可以保证,总会安装一个文件。 我怎样才能做到这一点?

澄清:通过外部我不是指CopyFile-Element。相反,我在谈论一个普通的WiX文件(如第一个Snippet中所见),它根本没有被压缩成一个cab。

1 个答案:

答案 0 :(得分:2)

您的代码段显示MSI中的文件,而非外部文件,这是混乱。如果它在外部,它不在WiX或MSI中,您可以使用WiX CopyFile元素复制它。

我很想使用文件搜索来查看文件是否存在,并使用WiX remember属性模式存储该结果属性。例如,使您的文件组件具有传递性并以#34; NOT FILEFOUND&#34;为条件,因此如果找到外部文件,则不会安装它。然后,如果设置了FILEFOUND,则只需复制外部文件。为此,我将添加另一个只包含条件FILEFOUND的注册表项(它必须包含某些内容)的传递组件。将WiX CopyFile放在此组件中,以便在设置FILEFOUND时运行。我认为没有编写任何代码就可以做到这一点。