Я только начинаю с WiX, так как мне нужно автоматизировать создание MSI на нашем CI-сервере. Нужно ли автоматически включать все зависимости проекта?Включая все зависимости
ответ
Расширение «proj» для heat.exe улучшается. Heat не совсем готов к использованию в автоматическом режиме. Это очень разумный способ собрать исходную структуру, но не совсем правильно с повторными запусками (например, Component/@ Guids нестабильны, но ...).
Если вышеупомянутые проблемы решены в heat.exe, то включение его в ваш процесс сборки, безусловно, спасет все проблемы, о которых люди упоминают выше. В нашем списке лучше делать то, что наиболее важные ошибки исправлены в основном наборе инструментов.
По моему опыту, Wix - это все еще очень ручной процесс. Вы должны добавить каждую зависимость отдельно - я думаю, идея заключалась в том, что вы создадите установщик Wix одновременно с тем, как вы строите проект и добавляете каждый элемент, когда вы добавляете его в код. Таким образом, это кажется менее сложным, чем необходимость вернуться и сделать ретроспективный взгляд на проект. Конечно, это было бы большим предложением для улучшения!
Я ничего не видел в WIX, который может это сделать, вы должны знать все зависимости, которые требует ваше решение/проект. Прочитайте эту blog, внутри цитата:
Держите источник, близкий и ваши зависимости ближе (. Извинения ВС-цзы)
Лучший способ я нашел, чтобы убедиться, что ничего не забыто MSI, должен был протестировать установщик на чистом установленном виртуальном ПК.
Ближайший я видел, для чего-то, что вы хотите, это этот парень blog.
На данный момент мы застреваем, чтобы сделать это вручную.
Я только что начал с WIX и думаю, что WixEdit (http://wixedit.sourceforge.net/) скалы для добавления нескольких файлов/dll, решил мое разочарование с помощью Wix для получения файлов. Просто сохраните свои файлы, а затем используйте функцию папки импорта. Конечно, он не поддерживает новые рекомендации 3.0 о наличии одного компонента для каждого файла.
Тепло хорошо также и поддерживает один компонент на файл. Далее в моем списке - автоматизация, чтобы эти файлы автоматически обновлялись в визуальной студии.
Посмотрите на paraffin, от Wintellect.
Я только начал с WIX, и я сделал быстрый и грязный трюк, чтобы добавить ссылки автоматически. Идея состоит в том, чтобы отсканировать всю DLL в выходной папке проекта, который вы хотите упаковать.
В предварительной сборки вашего WIX проекта, добавить
call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs"
Добавить файл GenerateDependency.bat в вашем WIX проекта, содержащего
@echo off
set SOLUTIONDIR=%1
set OUTPUTFILE=%2
echo Starting Dependency check...
echo ^<?xml version="1.0" encoding="UTF-8"?^> > %OUTPUTFILE%
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^> >> %OUTPUTFILE%
echo ^<Fragment^> >> %OUTPUTFILE%
echo ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^> >> %OUTPUTFILE%
for %%F in (%SOLUTIONDIR%WixServiceInstallerExample\bin\Debug\*.dll) do (
echo "-- Adding %%~nxF"
echo ^<Component Id="%%~nF"^> >> %OUTPUTFILE%
echo ^<File Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^> >> %OUTPUTFILE%
echo ^</Component^> >> %OUTPUTFILE%
)
echo ^</ComponentGroup^> >> %OUTPUTFILE%
echo ^</Fragment^> >> %OUTPUTFILE%
echo ^</Wix^> >> %OUTPUTFILE%
echo Dependency check done.
Изменить "WixServiceInstallerExample \ Bin \ Debug" в соответствии с ваша потребность.Это soulhd будет выходной папкой проекта, который вы хотите упаковать.
Примечание: Остерегайтесь, что часто VisualStudio вмешивается с кодировкой. Лучше отредактируйте этот файл с помощью Notepad ++ и убедитесь, что его в ANSI, а не UTF8.
Это создаст Dependencies.wxs, которые вы можете включить в свой проект. Если вы находитесь под контролем источника, исключите его из него.
Каждая сборка будет сканировать DLL и перестроить Dependencies.wxs, прежде чем на самом деле сделать пакет.
Обнаружено тепло около 10 минут назад. Получил список зависимостей сейчас, поэтому мне не нужно вводить его. Выглядит многообещающе: D – 2008-11-19 16:45:38