如果WiX中不存在则复制

时间:2009-12-16 03:16:57

标签: wix windows-installer wix3

我有一个配置文件myapp.exe.config,只有在它尚不存在的情况下才能安装。也就是说,我不想覆盖任何现有的配置文件。如何在WiX中完成?

(最终我必须做一些更复杂的设置,有默认值和覆盖等等。但与此同时我只是在寻找一个短期修复。)

2 个答案:

答案 0 :(得分:12)

如果文件是组件的keypath,则您描述的是默认行为。例如,如果foo.config已存在,则不会安装以下组件(如果版本化文件存在,如果已存在版本号相同或更高的文件),则不会安装以下组件:

<Component Id="foo.config">
   <File Source="foo.config"/>
</Component>

请注意,如果组件中有多个文件,那么只有一个文件可以是 的keyPath。您可以通过将文件的KeyPath属性设置为yes来控制此操作。但建议的策略是每个组件只有一个文件,在这种情况下,文件自动成为组件键路径。

修改:请注意,可以使用REINSTALLMODE property覆盖此默认行为。您可能希望使用orca打开MSI,并查看是否在属性表中设置了此属性。

答案 1 :(得分:3)

您要在组件上使用NeverOverwrite和Permanent ...

<video autoplay muted loop id="bkgrdVideo">
    <source src="assets/headerVideo.mp4" type="video/mp4">
</video>

我在我的config.json文件中使用了此文件,该文件包含很长的讨厌的Web服务连接字符串。切勿通过任何用户操作将其删除。

http://wixtoolset.org/documentation/manual/v3/xsd/wix/component.html