Как я могу исключить файлы из-за жары (WiX 3.5)?
Я хотел бы собрать папку с большим количеством файлов с помощью heat.exe. Но вместо того, чтобы собирать все файлы, я бы хотел исключить определенные расширения файлов, такие как "*.txt" или что-то в этом роде. Как я могу это сделать?
3 ответа
Я думаю, что пока единственный вариант - собрать всю папку и применить преобразование к результирующему файлу.wxs (см. -t:<xsl>
переключатель), чтобы исключить то, что не требуется (TXT-файлы в вашем случае). Тем не менее, я не пробовал версию Heat 3.5 (судя по версии 3.0), но я не думаю, что есть изменения в этой области.
Я не большой сторонник этой модели. Как вы обеспечиваете контроль изменений при использовании недетерминированного процесса? Откуда вы знаете, что файл, который появился в каталоге, действительно должен поставляться в продукте, и откуда вы знаете, что файл, который исчез из каталога, не должен нарушать сборку? Откуда вы знаете, что нарушаете правила компонентов и создаете проблемы с обслуживаемостью?
Раньше я делал динамические ссылки на файлы в 1990-х, потому что это было "легко", но я помню, что это кусало меня много раз, и с тех пор я этого не делал.
Я знаю, что Боб Арнсон был согласен с этой точкой зрения:
http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03420.html
Но теперь в WiX 3.5 я начинаю видеть возможности, которые поддерживают динамическое связывание, и я просто не понимаю, почему они так поступили. Я бы предпочел обновить файл WXS и вернуть его обратно в систему контроля версий, а затем рискнуть поставить процесс развертывания на автопилот.
Вместо того, чтобы пытаться понять, как собирать выбранные файлы из папки, я использую действие перед сборкой, чтобы заполнить папку только теми файлами, которые я хочу собрать. Следующий рабочий процесс работал на меня:
- Удалить "файлы", если он существует
- Создайте папку "файлы"
- Скопируйте файлы в папку "файлы". Я использую действие сборки robocopy, которое дает мне достаточный контроль, чтобы указать, какие файлы включать или исключать.
- Соберите всю папку.
Он настроен на условное выполнение сбора урожая, только для отладочных сборок. Сборки релизов генерируются с нашего TFS-сервера и используют сгенерированные.wxs из системы контроля версий. Все должно быть в порядке, чтобы запустить сборку на сервере сборки, но это дополнительный шаг, и отсутствие его запуска устраняет проблему "недетерминированного процесса", описанную Кристофером Пейнтером. Кроме этого одного шага, на сервере сборки выполняются те же шаги, что и на моем компьютере разработчика.