如果WiX中不存在则复制

dan*_*gph 9 windows-installer wix wix3

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

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

Wim*_*nen 12

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

<Component Id="foo.config">
   <File Source="foo.config"/>
</Component>
Run Code Online (Sandbox Code Playgroud)

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

编辑:请注意,可以使用REINSTALLMODE属性覆盖此默认行为.您可能想要使用orca打开MSI,并查看是否在属性表中设置了此属性.


use*_*020 5

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

<Component Id="foo.config.cmp" NeverOverwrite="yes" Permanent="yes" Guid="INSERT_GUID_HERE">
    <File Id="foo.config.file" KeyPath="yes" Source="foo.config"/>
</Component>
Run Code Online (Sandbox Code Playgroud)

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

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