Лучший способ создать файл фрагмента wix на основе пользовательских каталогов для использования в MSBUILD

StackOverflow https://stackoverflow.com/questions/710687

  •  22-08-2019
  •  | 
  •  

Вопрос

В духе этого вопроса от Si здесь: Хитрости и советы WiX.Я пытаюсь определить наилучший способ получить фрагменты create wix на основе каталогов.Сбор файлов, так сказать.Например, в папке bin \ release у меня могло бы быть много разных папок плюс файлы, которые я хотел бы очень легко записывать фрагментами.Я делал это, набирая их или используя wixedit.

Пожалуйста, обратите внимание, что я ничего не пробовал, просто провел повторный поиск здесь:А) Я немного почитал о жаре.(http://installing.blogspot.com/2006/04/heatexe-making-setup-easier.html) Однако я не уверен насчет запуска его из msbuild?Б) Я нашел эту статью в блоге Newagesolution, в которой обсуждается использование скрипта t4: http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html

Я хотел бы знать, что другие делают, чтобы решить эту проблему.

С уважением, Брайан

Это было полезно?

Решение

Хорошо, Дэниел, я определенно согласен с использованием тепла, но я думаю, что Роб указал мне правильное направление для того, что я в итоге использовал.

В итоге я использовал HeatDirectory.(Пожалуйста, обратите внимание, я не планирую выполнять исправления.Если вам нужно исправление, вы можете посмотреть на другое решение, но для исправления может подойти heat / каталог тепла.) К сожалению, ответ Роба был довольно ограниченным, поэтому я бы не сказал, что он действительно ответил на мой вопрос.Просто указал мне правильное направление.Спасибо Робу и Дэниелу за вашу помощь.

Поэтому я вернулся и сам ответил на этот вопрос.

Препятствия...

Препятствие 1 Я столкнулся с тем, что в Интернете почти нет документации о том, как реализовать heat tasks / каталог heat (Heat, завернутый в msbuild) из visual studio.Пожалуйста, обратите внимание, что оболочка для запуска из msbuild выглядит довольно новой, и я отказываюсь использовать ее на свой страх и риск и т.д.Из-за отсутствия документации я отправил электронное письмо в список пользователей wix.Я получил помощь от Брайана Роджерса.Спасибо, Брайан, это решило все для меня.Взгляните на его замечательную запись в блоге здесь, чтобы лучше понять, как heat поможет вам автоматизировать: http://icumove.spaces.live.com/blog/cns !FB93073C6534B681!461.запись

Препятствие 2 Поработав с heat, я обнаружил, что использую компоненты не так, как рекомендуется, но мне пришлось собрать воедино все рассуждения.Я думаю, что многие люди столкнутся с этим в начале использования Wix, если у вас нет предварительных знаний об установщике Windows.Поэтому я рекомендую немного почитать:Убедитесь, что вы также прочитали правила компонентов, если вы новичок, как я, в установщике Windows.Правила компонентов из MS: http://msdn.microsoft.com/en-us/library/aa370561.aspx.Прочтите это от Роба Меншинга, чтобы лучше понять компоненты: http://robmensching.com/blog/posts/2003/10/4/Windows-Installer-Components-Introduction http://robmensching.com/blog/posts/2003/10/18/Component-Rules-101 Для получения дополнительной информации об установщике Windows ознакомьтесь с этими правилами в команде установщика Windows (правило 16:Следуйте правилам компонентов):http://blogs.msdn.com/windows_installer_team/archive/2006/05/12/595950.aspx

Препятствие 3 Вы должны решить, хотите ли вы исправлять свои файлы или обновляться каждый раз при установке новой версии.К счастью, мне не нужно выполнять исправления, поэтому при каждом обновлении я просто удаляю предыдущую версию следующим образом: Как реализовать обновление установщика WiX?.Это значительно упрощает задачу.При исправлении вам понадобится полный контроль над ситуацией.Что-то более сложное, когда вы хотите автоматизацию / автоматическое построение для многих разработчиков, которые ничего не знают о wix, кроме того, что wix создает поля msi.Кажется, что это сработает при использовании тепла, но я не уверен.

Препятствие 4 Мне потребовалось немного времени, чтобы выяснить, почему включаемый файл с моими переменными препроцессора не работал.Я наконец-то понял это.Вы должны включить файл в свой файл .wxs следующим образом:Смотрите здесь для получения более подробной информации:Включить содержимое текстового файла в скрипт WiX

http://wix.sourceforge.net/manual-wix2/preprocessor.htm

Препятствие 5 Поскольку я использую основные обновления с mix, и я хотел подключить subversion к номеру моего продукта.Я думал, это будет довольно просто, и это возможно, если вы знаете, как это сделать.У меня здесь возникли проблемы, и в этом мне тоже пришлось обратиться за помощью.

Препятствие 6 С тепловым обновлением файлов на основе папки bin все работает довольно хорошо.Ну, почти автоматически, если есть какие-либо конфликты в ссылках на dll и т.д., то файлы не будут включены в установщик, и поэтому все может работать неправильно.Вам необходимо внедрить процесс тестирования, чтобы протестировать вашу программу после установки.Это может быть критично, если вы пропустите dll.Я бы также рекомендовал вам отслеживать используемые DLL-файлы программы и сравнивать с файлом msi.

Теперь о решении с использованием HeatDirectory (с помощью Брайана Роджерса (команда wix)):

 <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == ''">Debug</Configuration>
   <OutputName>msbuild.heatfile</OutputName>
   <OutputType>Package</OutputType>
   <WixToolPath>..\..\YourHeatDir</WixToolPath>
   <WixToolPath>$(WixToolPath)</WixToolPath>
   <Cultures>en-us</Cultures>
   <LinkerBaseInputPaths>..\..\data\HeatDir</LinkerBaseInputPaths>
 </PropertyGroup>
 <ItemGroup>
   <Compile Include="product.wxs" />
   <Compile Include="TestDir.wxs" />
 </ItemGroup>
 <Import Project="$(WixToolPath)\Wix.targets" />
 <UsingTask TaskName="HeatDirectory"
   AssemblyFile="$(WixToolPath)WixUtilExtension.dll" />
 <Target Name="BeforeBuild">
   <HeatDirectory
      Directory="..\..\data\HeatDir"
      DirectoryRefId="DataDir"
      OutputFile="TestDir.wxs"
      AutogenerateGuids="true"
      ToolPath="$(WixToolPath)" />
 </Target>

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

Просто для справки:Я нашел этот пост на stackoverflow после того, как опубликовал свой вопрос: Как добавить весь каталог или выходные данные проекта в пакет WiX Также для справки, я только что увидел эту статью здесь: Сбор данных .csproj с помощью heat.exe в Visual Studio 2008 и WiX (v3).и опять же, это можно сделать, используя вместо этого тепловые задачи.
Оба обсуждают использование сторонних инструментов.Один назывался Мальва, а другой - Парафин.Я думаю, что парафин выглядит устойчивым и может делать почти то же, что и тепло.С несколькими дополнениями:Смотрите здесь для получения подробной информации: http://www.wintellect.com/cs/blogs/jrobbins/archive/2007/10/18/wix-hints-for-new-users-part-1-of-3.aspx

В любом случае надеюсь, что это поможет другим.

Другие советы

Новые тепловые задачи могут очень хорошо подойти вам здесь.Они могут извлекать группы выходных данных проекта из других проектов в Visual Studio.В последней сборке это работает намного лучше, чем в старых сборках, поэтому обязательно приобретайте еженедельный http://wixtoolset.org/releases/.

Как бы то ни было, мы, по сути, используем heat.exe из msbuild.Если вы такой же придирчивый, как я, то тепловыделение, вероятно, не совсем то, что вы хотите, но это легко исправить с помощью преобразования XSL (я полагаю heat.exe имеет параметр командной строки, специально предназначенный для этой цели).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top