Как я могу исключить файлы из-за жары (WiX 3.5)? - PullRequest
28 голосов
/ 17 сентября 2010

Я хотел бы собрать папку с большим количеством файлов, используя heat.exe. Но вместо того, чтобы собирать все файлы, я бы хотел исключить определенные расширения файлов, такие как "* .txt" или что-то в этом роде. Как я могу это сделать?

Ответы [ 3 ]

7 голосов
/ 17 сентября 2010

Я думаю, что пока единственный вариант - собрать всю папку и применить преобразование к результирующему файлу .wxs (см. Переключатель -t:<xsl>), чтобы исключить то, что не требуется (файлы txt в вашем случае).Тем не менее, я не пробовал версию Heat 3.5 (судя по версии 3.0), но я не думаю, что в этой области есть изменения.

3 голосов
/ 18 сентября 2010

Я не большой сторонник этого паттерна. Как вы обеспечиваете контроль изменений при использовании недетерминированного процесса? Откуда вы знаете, что файл, который появился в каталоге, действительно должен поставляться в продукте, и откуда вы знаете, что файл, который исчез из каталога, не должен нарушать сборку? Откуда вы знаете, что нарушаете правила компонентов и создаете проблемы с обслуживаемостью?

Я использовал динамическое связывание файлов в 1990-х годах, потому что это было «легко», но я помню, что это кусало меня много раз, и с тех пор я этого не делал.

Я знаю, что Боб Арнсон раньше соглашался с этой точкой зрения:

http://www.mail-archive.com/wix-users@lists.sourceforge.net/msg03420.html

Но теперь в WiX 3.5 я начинаю видеть возможности, которые поддерживают динамическое связывание, и я просто не понимаю, почему они так поступили. Я бы предпочел обновить файл WXS и вернуть его обратно в систему контроля версий, а затем рискнуть поставить процесс развертывания на автопилот.

2 голосов
/ 17 июня 2014

Вместо того, чтобы пытаться выяснить, как собирать выбранные файлы из папки, я использую действие перед сборкой, чтобы заполнить папку только теми файлами, которые я хочу собрать. У меня работает следующий рабочий процесс:

  1. Удалить "файлы", если они существуют
  2. Создать папку "files"
  3. Скопируйте файлы в папку «files». Я использую действие сборки robocopy, которое дает мне достаточный контроль, чтобы указать, какие файлы включать или исключать.
  4. Соберите всю папку.

У меня установлен условный запуск действия по сбору урожая, только для отладочных сборок. Сборки релизов генерируются с нашего TFS-сервера и используют сгенерированные .wxs из системы контроля версий. Все должно быть в порядке, чтобы запустить сборку на сервере сборки, но это дополнительный шаг, и его отсутствие устраняет проблему «недетерминированного процесса», описанную Christopher Painter . Кроме этого одного шага, на сервере сборки выполняются те же шаги, что и на моем компьютере разработчика.

...