Wix: один файл на компонент или несколько файлов на компонент?
Должен ли я обернуть все файлы, которые я хочу установить, в отдельные компоненты? В чем преимущество размещения нескольких файлов в одном компоненте?
2 ответа
Одной из причин "один файл на компонент" является отказоустойчивость. Когда приложение запускается, установщик Windows может проверить, отсутствует ли ключевой путь какого-либо компонента. Если ключевой путь отсутствует, компонент переустанавливается / ремонтируется.
Если компонент имеет несколько файлов, тогда только один файл может быть ключевым путем. В WIX вы указываете это, установив KeyPath=yes
на элементе File. Другие файлы не будут полностью защищены с помощью устойчивости установщика Windows. Они будут переустанавливаться только в том случае, если файл с ключами пропал.
Другая причина иметь "один файл на компонент" - это при установке файлов в места, где они уже могут присутствовать (например, при обновлении приложения или при установке в c:\windows\system32
). Установщик Windows определяет, нужно ли устанавливать компонент, проверяя путь к ключу. Если путь к файлу является файлом и файл уже существует (с той же версией или выше), то компонент не устанавливается. Это проблема, если другие файлы в компоненте действительно нужно было установить / обновить.
Я придерживаюсь подхода Microsoft, который также используется InstallShield: http://msdn.microsoft.com/en-us/library/aa368269(VS.85).aspx
Приведенная выше ссылка дает преимущества этого подхода.