Включая все зависимости

Я только начинаю с WiX, поскольку мне нужно иметь возможность автоматизировать создание MSI на нашем CI-сервере. Есть ли способ автоматически включить все зависимости проекта?

6 ответов

Решение

Расширение "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 чего-то такого, что могло бы сделать это, вы должны знать все зависимости, которые требуются вашему решению / проекту. Прочитайте этот блог, внутри цитата:

Держите ваш источник близко и ваши зависимости ближе (извинения Sun-TZU.)

Лучший способ убедиться, что в MSI ничего не забыто, - это проверить установщик на чистом установленном виртуальном ПК.

Самое близкое, что я видел, для чего-то, что вы хотите - это блог этого парня.

На данный момент мы застряли, чтобы сделать это вручную.

Я только начал с WIX и думаю, что WixEdit ( http://wixedit.sourceforge.net/) качает за добавление нескольких файлов / библиотек, решил мое разочарование с Wix из-за простоты загрузки файлов. Просто держите ваши файлы организованными, а затем используйте функцию папки импорта. Конечно, он не поддерживает новые рекомендации 3.0 по одному компоненту на файл.

Высокая температура также хороша и поддерживает один компонент на файл. Следующим в моем списке будет автоматизация, чтобы эти файлы автоматически обновлялись в визуальной студии.

Другие вопросы по тегам