Я хотел бы собрать папку с большим количеством файлов, используя файл heat.exe. Но вместо сбора всех файлов я хотел бы исключить определенные расширения файлов, такие как "*.txt" или что-то в этом роде. Как я могу это сделать?
Как я могу исключить сбор файлов с помощью тепла (WiX 3.5)?
Ответ 1
Я думаю, что единственным вариантом на данный момент является сбор всей папки и применение преобразования к результирующему файлу .wxs(см. -t:<xsl>
switch), чтобы исключить то, что не требуется (файлы txt в вашем случае). Тем не менее, я не пробовал 3.5 версию тепла (судя по версии 3.0), но я не думаю, что в этой области есть изменения.
Ответ 2
Я не большой сторонник этой картины. Как вы обеспечиваете управление изменениями при использовании недетерминированного процесса? Как вы знаете, что файл, который появился в каталоге, действительно должен отправляться в продукт, и как вы знаете, что файл, который исчез из каталога, не должен прерывать сборку? Как вы знаете, что нарушаете правила компонентов и создаете проблемы с обслуживанием?
Я использовал динамическое связывание файлов в 1990 году, потому что он был "легким", но я помню, как он кусал меня много раз, и я не делал этого с тех пор.
Я знаю, что Боб Арнсон согласился с этой точкой зрения:
http://www.mail-archive.com/[email protected]/msg03420.html
Но теперь в WiX 3.5 я начинаю видеть возможности, поддерживающие динамическое связывание, и я просто не понимаю, почему они пойдет именно так. Я бы скорее обновил файл WXS и вернул его обратно в исходный элемент управления, а затем рискнул запустить процесс развертывания на автопилоте.
Ответ 3
Вместо того, чтобы пытаться выяснить, как собрать выбранные файлы из папки, я использую действие перед сборкой, чтобы заполнить папку только файлами, которые я хочу собрать. Для меня работает следующий рабочий процесс:
- Удалить "файлы" , если он существует
- Создайте папку "файлы"
- Скопируйте файлы в папку "файлы" . Я использую действие robocopy build, которое дает мне достаточно контроля, чтобы указать, какие файлы включать или исключать.
- Уберите всю папку.
У меня он установлен для запуска действия урожая условно, только для отладочных сборников. Релиз сборки генерируются с нашего сервера TFS и используют сгенерированные .wxs из исходного управления. Должно быть хорошо, чтобы запустить сборку на сервере сборки, но это дополнительный шаг и отсутствие его выполнения исключает проблему "без детерминированного процесса", описанную Christopher Painter. Помимо этого шага, эти же шаги выполняются на сервере сборки, как и на моей машине dev.