Используя WiX, как установить один файл (потенциально) в несколько подкаталогов, основываясь на том, что доступно во время установки? - PullRequest
4 голосов
/ 10 апреля 2009

Я использую WiX и хотел бы знать .wxs, необходимые для того, чтобы взять файл и установить его в каждый доступный подкаталог определенного местоположения. Это может означать 0 или более окончательных мест установки, определенных во время установки на основе существующей структуры каталогов. Например, если я начал установку с:

\target
 \subdir-1
 \subdir-2

Тогда в конце установки мой файл будет находиться в \ subdir-1 и \ subdir-2. С другой стороны, если эти каталоги не существовали в системе при запуске установки, мой файл не был бы установлен вообще, и никакие подкаталоги не были бы созданы.

Ответы [ 3 ]

3 голосов
/ 10 апреля 2009

Afaik это невозможно с WiX (потому что это в основном против природы MSI для установки компонента в нескольких местах).

Вы можете либо

  • создать отдельный компонент для каждой подпапки или
  • используйте настраиваемое действие для копирования компонента во все подпапки.

В последнем случае вы также должны предоставить соответствующий ЦС для удаления, который снова удалит все файлы из подпапок.

РЕДАКТИРОВАТЬ: Кажется, мой ответ выше не совсем правильно. MSI поддерживает дублирование файлов с использованием таблиц DuplicateFile , а WiX 3.0 также предоставляет механизм, называемый «умные кабели» . Оба упомянуты в посте Аарона Стебнера.

1 голос
/ 14 апреля 2009

Если вы нацелены на Vista (или Win2k8, но не уверены в Win2k3), вы можете использовать mklink.

1 голос
/ 11 апреля 2009

Не без настраиваемого действия, вам нужно написать настраиваемое действие, которое будет это делать.
Последним и лучшим в пользовательских действиях является фреймворк DTF ( и здесь ), который поставляется с Wix3.

...