Включая все зависимости
-
08-07-2019 - |
Вопрос
Я только начинаю с WiX, так как мне нужно иметь возможность автоматизировать создание MSI на нашем CI-сервере. Есть ли способ автоматически включать все зависимости проекта?
Решение
" proj " расширение Heat.exe становится все лучше. Тепло не совсем готово для использования в производстве в автоматическом режиме мода. Это очень разумный способ собрать начальную структуру, но с повторными запусками это не совсем правильно (например, Component / @ Guids не стабильны, пока ...).
Когда вышеуказанные проблемы будут решены с помощью heat.exe, его включение в процесс сборки, безусловно, избавит от всех проблем, упомянутых выше. Это в нашем списке, чтобы сделать лучше после того, как самые серьезные ошибки были исправлены в основном наборе инструментов.
Другие советы
Я только начал с 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 " в соответствии с вашими потребностями. Эта папка будет выходной папкой проекта, который вы хотите упаковать
Примечание. Остерегайтесь того, что VisualStudio часто возится с кодировкой. Лучше отредактируйте этот файл с помощью Notepad ++ и убедитесь, что он в ANSI, а не в UTF8.
Это создаст файл Dependencies.wxs, который вы можете включить в свой проект. Если вы находитесь под контролем источников, исключите его из него.
Каждая сборка будет повторно сканировать .dll и перестраивать Dependencies.wxs перед тем, как создавать пакет.
Посмотрите на Парафин , от Wintellect.
По моему опыту, Wix все еще очень ручной процесс. Вы должны добавить каждую зависимость по отдельности - я думаю, что идея состояла в том, что вы будете собирать установщик Wix в то же время, когда вы создаете свой проект, и добавлять каждый элемент по мере его добавления в код. Таким образом, это кажется менее пугающим, чем возвращение и ретроспектива проекта. Хотя это, безусловно, было бы отличным предложением для улучшения!
Я не видел в WIX чего-либо такого, что могло бы сделать это, вы должны знать все зависимости, которые требуются вашему решению / проекту. Прочитайте это блог , внутри цитата:
Держите источник близко, а ваш зависимости ближе (извиняюсь ВС-цзы.)
Лучший способ убедиться, что в MSI ничего не забыто, - это проверить установщик на чистом установленном виртуальном ПК. Р>
Самое близкое, что я видел, для чего-то, что вы хотите, это блог . Р>
Пока что мы застряли, чтобы сделать это вручную.
Я только начал с WIX и думаю, что WixEdit ( http://wixedit.sourceforge.net/ ) качает для добавления нескольких файлов / DLL, решил мое разочарование с Wix, чтобы получить файлы легко. Просто держите ваши файлы организованными, а затем используйте функцию папки импорта. Конечно, он не поддерживает новые рекомендации 3.0 по одному компоненту на файл.
Высокая температура также хороша и поддерживает один компонент на файл. Следующим шагом в моем списке станет автоматизация, чтобы эти файлы автоматически обновлялись в визуальной студии.