Скопируйте, если не существует в WiX - PullRequest
8 голосов
/ 16 декабря 2009

У меня есть файл конфигурации myapp.exe.config, который я хочу установить, только если он еще не существует. То есть я не хочу перезаписывать какой-либо существующий файл конфигурации. Как это можно сделать в WiX?

(В конечном итоге мне придется сделать что-то более сложное с настройками, с настройками по умолчанию, переопределениями и т. Д. Но пока я просто ищу краткосрочное исправление.)

Ответы [ 2 ]

12 голосов
/ 16 декабря 2009

То, что вы описываете, является поведением по умолчанию, если файл является keypath компонента. Например, следующий компонент не будет установлен, если foo.config уже существует (или в случае файла с версиями, если файл с таким же или более высоким номером версии уже существует):

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

Обратите внимание, что если у вас есть несколько файлов в вашем компоненте, то только один может быть Ключевой путь. Вы можете управлять этим, установив атрибут KeyPath файла в yes. Но рекомендуемая стратегия состоит в том, чтобы иметь только один файл на компонент, и в этом случае файл автоматически становится путем к ключу компонента.

edit : обратите внимание, что это поведение по умолчанию можно изменить с помощью свойства REINSTALLMODE . Вы можете открыть MSI с помощью orca и посмотреть, устанавливается ли это свойство в таблице свойств.

3 голосов
/ 26 октября 2018

Вы хотите использовать 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, которые содержат очень длинные неприятные строки подключения к веб-сервису. Он никогда не должен блокироваться никакими действиями пользователя.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...