Как добавить весь каталог или вывод проекта в пакет WiX
Мы решили перейти от интегрированной настройки VS к WiX.
Однако в настоящее время мы используем выходные файлы проектов в качестве входных данных для проекта установки. Это позволяет нам легко добавлять файлы приложений в каталог (для изображений, образцов и других ресурсов...), и эти файлы автоматически добавляются в настройку при сборке.
Я не смог найти подобную функцию в WiX. WiX, кажется, требует одну запись каталога и одну запись файла для каждого каталога и файла. Это потребовало бы, чтобы мы меняли источник WiX каждый раз, когда добавлялся файл, что, на мой взгляд, является запретительным, поскольку у нас их очень много.
Есть ли какой-нибудь интегрированный способ сделать это с WiX, или мне нужно написать свою собственную задачу, которая создаст источник WiX перед вызовом Candle?
5 ответов
Для WiX 2.0 сало очень ограничено; Парафин и мальва предлагают дополнительную функциональность. Для WiX 3.0 высокая температура обеспечивает ту же функциональность, что и для сала, но немного лучше.
В моем случае я использовал источник мальвы, немного изменил и использовал его, потому что парафин нуждается в версии 3.5.Net.
Вы можете использовать мальву
или инструмент Paraffin для генерации фрагментов WiX: Начало работы, Боль от WiX, Лучшее решение, Paraffin, Загрузка, Paraffin для WiX 3.0
Я использовал 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
Проект MapGuide с открытым исходным кодом в настоящее время использует Paraffin 3.0 Джона Роббинса, как указывали другие.
По сути, в первый раз для данной версии выпуска мы запустим наш скрипт установщика с действием " генерировать", которое создает новые файлы.wxs для исходной папки с конкретными параметрами для каждой.
В последующих сборках той же версии вызывается действие " regen", чтобы гарантировать, что файлы.wxs будут обновлены с любыми новыми файлами / каталогами, которые были добавлены.
Я считаю, что Heat v3 теперь также позволяет вам многое (или, может быть, все?), Как пишет Брайан Роджерс. Я все еще чувствую себя более комфортно с тем, как Paraffin делает это более явно, поддерживая статические GUID, но текущий Heat выглядит хорошим вариантом.
После дальнейших исследований кажется, что есть включенный двоичный файл под названием tallow.exe, который делает именно это. Он создает фрагмент из каталога путем рекурсивного поиска файлов.
В моем использовании WIX я никогда не сталкивался с функцией, которая позволяла бы вам добавлять целый каталог файлов за раз. Это связано с тем, что существует множество способов использования данного файла (система не знает, захотите ли вы позже обратиться к конкретному файлу в этой папке и т. Д., И ей нужно это знать), а также потому что сама установка должна быть довольно специфичной.
Это не мешает вам написать свой собственный интерфейс для WIX, который будет генерировать XML-файл WIX (или его части) после анализа содержимого структур каталогов. Это в основном то, что делает одна из систем, которые мы используем в моей работе. Это та же идея, что и для любой утилиты генерации кода или текстового файла. Просто пройдите через дерево и сгенерируйте соответствующий текст.
РЕДАКТИРОВАТЬ: Таким образом, вы можете считать WIX "языком низкого уровня" для определения установки, а свою утилиту - "языком высокого уровня". Если вам нужна помощь в написании одного, дайте нам знать.
Кроме того, вы можете создать файл WIX как часть процесса сборки, добавив эту утилиту к пользовательским шагам сборки в VStudio. Таким образом, у вас фактически нет "сохраненного файла WIX", который кто-либо создает, система просто создает его в конце, автоматически принимая во внимание новые файлы на этапе после сборки.