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

В духе этого вопроса Си тут: Трюки и советы WiX . Я пытаюсь определить лучший способ получить создание фрагментов 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

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

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

Ответы [ 3 ]

13 голосов
/ 28 апреля 2009

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

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

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

Барьеры ...

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

барьер 2 Поработав с теплом, я обнаружил, что я не использую компоненты рекомендованным способом, но мне пришлось собрать воедино все рассуждения. Я думаю, что многие люди столкнутся с этим в начале использования 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 Так как я использую крупные обновления со смесью, и я хотел подключить 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

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

3 голосов
/ 03 апреля 2009

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

0 голосов
/ 02 апреля 2009

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

...