Как добавить весь каталог или выходные данные проекта в пакет WiX

StackOverflow https://stackoverflow.com/questions/414685

Вопрос

Мы решили перейти с VS integrated setup на WiX.

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

Вот такой пример:

"$(WIX)bin\heat.exe " каталог "$(Исходный путь)" -cg MyFiles -gg -scom -sreg -sfrag -dr INSTALLDIR -вывод "$(ProjectDir)Фрагменты\FileFragment.wxs" -переменная wix.Путь к установке

Проект MapGuide с открытым исходным кодом в настоящее время использует Paraffin 3.0 , как указали другие.

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top