Один файл на компонент или несколько файлов на компонент?

Должен ли я обернуть все файлы, которые я хочу установить в отдельных компонентах? В чем преимущество размещения нескольких файлов в одном компоненте?

Ответ 1

Одной из причин "один файл на компонент" является отказоустойчивость. Когда приложение запускается, установщик Windows может проверить, отсутствует ли ключевой путь какого-либо компонента. Если ключевой путь отсутствует, компонент переустанавливается/ремонтируется.

Если компонент имеет несколько файлов, тогда только один файл может быть ключевым путем. В wix вы указываете это, устанавливая KeyPath=yes для элемента File. Другие файлы не будут полностью защищены с помощью устойчивости установщика Windows. Они будут переустанавливаться только в том случае, если файл с ключами пропадает.

Другая причина иметь "один файл на компонент" - это при установке файлов в места, где они уже могут присутствовать (например, при обновлении приложения или при установке в c:\windows\system32). Установщик Windows определяет, нужно ли устанавливать компонент, проверяя путь к ключу. Если путь к файлу является файлом, и файл уже существует (с той же версией или выше), то компонент не устанавливается. Это проблема, если другие файлы в компоненте действительно должны быть установлены/обновлены.