Как добавить весь каталог или вывод проекта в пакет WiX - PullRequest
52 голосов
/ 06 января 2009

Мы решили перейти с интегрированной настройки VS на WiX.

Однако в настоящее время мы используем выходные файлы проектов в качестве входных данных для проекта установки. Это позволяет нам легко добавлять файлы приложений в каталог (для изображений, образцов и других ресурсов ...), и эти файлы автоматически добавляются в настройку при сборке.

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

Есть ли какой-нибудь интегрированный способ сделать это с помощью WiX, или мне нужно написать собственную задачу, которая создаст источник WiX перед вызовом свечей?

Ответы [ 5 ]

24 голосов
/ 06 января 2009

Для WiX 2.0 сало очень ограничено; Парафин и мальва предлагают дополнительную функциональность. Для WiX 3.0, Heat предлагает ту же функциональность, что и сало, немного лучше.

В моем случае я использовал источник мальвы, немного изменил и использовал его, потому что для парафина нужна версия 3.5 .Net. *.

Вы можете использовать Мэллов

или инструмент Paraffin для создания фрагментов WiX: Начало работы , Боль от WiX , Лучший жир, Парафин , Скачать , Парафин для WiX 3.0

19 голосов
/ 26 апреля 2011

Я использовал heat.exe в WIX 3.5 только для этой цели. В последний раз, когда я проверял, документация не была обновлена ​​до выпуска 3.5, так что имейте это в виду.

Вот пример:

"$ (WIX) bin \ heat.exe" dir "$ (SourcePath)" -cg MyFiles -gg -scom -sreg -sfrag -dr INSTALLDIR -out "$ (ProjectDir) Fragments \ FileFragment.wxs" -var wix.InstallerPath

4 голосов
/ 30 апреля 2009

В проекте MapGuide Open Source в настоящее время используется Paraffin 3.0 Джона Роббинса, как указывали другие.

По сути, в первый раз для данной версии выпуска мы запустим наш скрипт установщика с действием " generate ", которое создает новые файлы .wxs для исходной папки с конкретными параметрами для каждой.

В последующих сборках той же версии вызывается действие " regen ", чтобы гарантировать, что файлы .wxs обновляются с любыми новыми добавленными файлами / каталогами.

Я считаю, что Heat v3 теперь также позволяет вам многое (или, может быть, все?), Как пишет Брайан Роджерс . Я все еще чувствую себя более комфортно с тем, как Paraffin делает это более явно, поддерживая статические идентификаторы GUID, но текущий Heat выглядит хорошим вариантом.

2 голосов
/ 06 января 2009

После дальнейших исследований кажется, что есть включенный двоичный файл, называемый tallow.exe, который делает именно это. Он создает фрагмент из каталога путем рекурсивного поиска файлов.

1 голос
/ 06 января 2009

При использовании WIX я никогда не сталкивался с функцией, которая позволяла бы вам добавлять целый каталог файлов за раз. Это связано с тем, что существует множество способов использования данного файла (система не знает, захотите ли вы позже обратиться к конкретному файлу в этой папке и т. Д., И ей нужно это знать), а также потому что сама установка должна быть довольно специфичной.

Это не мешает вам написать свой собственный интерфейс для WIX, который будет генерировать XML-файл WIX (или его части) после анализа содержимого структур каталогов. Это в основном то, что делает одна из систем, которую мы используем в моей работе. Это та же идея, что и у любой утилиты генерации кода или текстового файла. Просто пройдите через дерево и сгенерируйте соответствующий текст.

РЕДАКТИРОВАТЬ: Таким образом, вы можете считать WIX «языком низкого уровня» для определения установки, а свою утилиту - «языком высокого уровня». Если вам нужна помощь в написании, сообщите нам.

Кроме того, вы можете создать файл WIX как часть процесса сборки, добавив эту утилиту к пользовательским шагам сборки в VStudio. Таким образом, на самом деле у вас нет «сохраненного файла WIX», который кто-либо создает, система просто создает его в конце, автоматически принимая во внимание новые файлы на этапе после сборки.

...