У меня есть файл конфигурации, myapp.exe.config, который я хочу установить, только если он уже не существует. Таким образом, я не хочу перезаписывать любой существующий файл конфигурации. Как это может быть сделано в WiX?
(В конечном счете я должен буду сделать что-то более сложное с настройками, имея значения по умолчанию и переопределения и так далее. Но тем временем я просто ищу краткосрочную фиксацию.)
То, что вы описываете, является поведением по умолчанию, если файл является ключевым путем компонента. Например, следующий компонент не будет установлен, если foo.config
уже существует (или в случае файла с версией, если уже существует файл с таким же или большим номером версии):
<Component Id="foo.config">
<File Source="foo.config"/>
</Component>
Примечание что если у вас есть несколько файлов в вашем компоненте, то только один может быть
keypath. Вы можете контролировать это, установив для атрибута KeyPath
файла значение yes
. Но рекомендуемая стратегия - иметь только один файл для каждого компонента, и в этом случае файл автоматически становится ключевым путем компонента.
edit : обратите внимание, что это поведение по умолчанию можно переопределить с помощью свойства REINSTALLMODE . Вы можете открыть свой MSI с помощью orca и посмотреть, устанавливается ли это свойство в таблице свойств.