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