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

Приведенная выше ссылка дает преимущества этого подхода.

Другие вопросы по тегам