代码之家  ›  专栏  ›  技术社区  ›  dan-gph

WIX中不存在时复制

  •  8
  • dan-gph  · 技术社区  · 15 年前

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

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

    2 回复  |  直到 15 年前
        1
  •  12
  •   Community CDub    8 年前

    如果文件是 keypath 组件的。例如,如果 foo.config 已经存在(或者对于版本化文件,如果已经存在版本号相同或更高的文件):

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

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

    编辑 :请注意,此默认行为可以用 REINSTALLMODE property . 您可能希望用打开您的msi orca 并查看是否正在属性表中设置此属性。

        2
  •  3
  •   user922020    6 年前

    您想在组件上使用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>
    

    我在config.json文件中使用它,这些文件包含到Web服务的非常长的讨厌的连接字符串。它不应该被任何用户操作抹去。

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