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

19

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

    
задан Chris Canal 19.11.2008 в 17:01
источник

6 ответов

9

Расширение «proj» для heat.exe улучшается. Тепло не совсем готово для использования в автоматическом режиме. Это очень разумный способ собрать исходную структуру, но не совсем правильно с повторными запусками (например, Component / @ Guids нестабильны, но ...).

Когда вышеупомянутые проблемы решаются в heat.exe, то включение его в ваш процесс сборки, безусловно, спасет все проблемы, о которых упоминают выше люди. Это в нашем списке, чтобы сделать лучше после того, как наиболее опасные ошибки исправлены в основном наборе инструментов.

    
ответ дан Rob Mensching 19.11.2008 в 17:39
  • Обнаружен жар около 10 минут назад. Получил список зависимостей сейчас, поэтому мне не нужно вводить его. Выглядит многообещающе: D –  Chris Canal 19.11.2008 в 17:45
  • Это старый ответ, но я надеюсь, что это не так, и heat.exe был достаточно стабильным для использования в производстве. :) –  ostati 24.03.2014 в 16:16
3

Я только начал с 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 до фактического создания пакета.

    
ответ дан Eric Craeymeersch 29.08.2013 в 19:37
1

Посмотрите парафин , от Wintellect.

    
ответ дан Ivaylo Bratoev 26.03.2009 в 15:40
0

По моему опыту, Wix - это все еще очень ручной процесс. Вы должны добавить каждую зависимость отдельно - я думаю, идея заключалась в том, что вы создадите установщик Wix одновременно с тем, как вы строите проект и добавляете каждый элемент, когда вы добавляете его в код. Таким образом, это кажется менее сложным, чем необходимость вернуться и сделать ретроспективный взгляд на проект. Конечно, это было бы большим предложением для улучшения!

    
ответ дан silverbugg 19.11.2008 в 17:16
0

Я ничего не видел в WIX, который может это сделать, вы должны знать все зависимости, которые требует ваше решение / проект. Прочтите этот блог , внутри - цитата:

  

Держите источник близко, а ваш   зависимые ближе (извинения   ВС-цзы.)

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

Ближайшее, что я видел, для чего-то, что вы хотите, это этот блог .

В настоящее время мы пытаемся сделать это вручную.

    
ответ дан CheGueVerra 19.11.2008 в 17:18
0

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

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

    
ответ дан Brian 03.03.2009 в 22:54