Вопрос

Я начинаю использовать WiX для выполнения автоматических сборок для создания msi-файлов моих проектов на c # и испытываю ошибку "Неопределенная переменная препроцессора '$(var.MyProject.TargetDir)'"

Я использую последнюю версию WiX v3.0.5419.Внутри моего файла wxs я пытаюсь использовать переменные препроцессора, которые перечислены на этой веб-странице (http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-variables.aspx)

<Component Id="MyId" Guid="MyGuid">
   <File Id="MyId" Name="MyName" KeyPath="yes" 
      Source="$(var.MyProject.TargetDir)\MyName.dll" />
</Component>

Я добавил ссылку для MyProject в файл .wixproj, и если я открою его в Блокноте, я смогу увидеть ссылку.

<ItemGroup>
  <ProjectReference Include="..\MyProject.csproj">
    <Name>MyProject</Name>
    <Project>{guid}</Project>
    <Private>True</Private>
  </ProjectReference>
</ItemGroup>

Это мой скрипт сборки nant, который я использую для создания msi.Может быть, это потому, что .wixproj знает о ссылке на проект, которая не используется в сборке?

<exec basedir="${tools.wix}" managed="true" program="candle.exe">
  <arg line='-out "${tools.wix.objfile}"' />
  <arg value="../MySetup.wxs" />
</exec>

Кто-нибудь может просветить меня по этому поводу, пожалуйста?

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

Решение

Как вы уже заметили, ваш скрипт сборки nant не использует wixproj файл вообще.

Здесь вы смешиваете два разных способа создания настройки wix:

  1. Вы можете использовать candle.exe и light.exe инструменты командной строки напрямую.Это игнорирует .wixproj файл.Это то, что вы делаете в своем скрипте сборки nant.Чтобы передать значения для переменных препроцессора, таких как $(var.MyProject.TargetDir), используйте такие опции , как -dMyProject.TargetDir=c:\foo.

  2. Вы можете создать файл .wixproj с помощью votive (надстройки visual Studio для wix).Как и все файлы проекта Visual Studio, файл wixproj на самом деле является файлом msbuild, который может быть собран с msbuild.exe.Переменные , такие как $(var.MyProject.TargetDir) автоматически устанавливаются задачами msbuild для построения настроек wix, если существует правильная ссылка на проект.

Я рекомендую вам создать файл wixproj с помощью <msbuild> nant задача.Это гарантирует, что ваша сборка nant выполняется так же, как при сборке установки вручную из visual studio.

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