我有一个配置文件myapp.exe.config,只有在它尚不存在的情况下才能安装。也就是说,我不想覆盖任何现有的配置文件。如何在WiX中完成?
(最终我必须做一些更复杂的设置,有默认值和覆盖等等。但与此同时我只是在寻找一个短期修复。)
答案 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