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