WiX undefined переменная препроцессора
Я начинаю использовать WiX для создания автоматических сборок для создания msi моих проектов С# и испытываю ошибку "Undefined препроцессорную переменную '$ (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 build script, который я использую для создания msi. Может быть, потому, что .wixproj знает о ссылке на проект, которая не используется в сборке?
<exec basedir="${tools.wix}" managed="true" program="candle.exe">
<arg line='-out "${tools.wix.objfile}"' />
<arg value="../MySetup.wxs" />
</exec>
Может кто-нибудь просветить меня по этому поводу?
Ответы
Ответ 1
Как вы уже заметили, ваш nant build script вообще не использует файл wixproj
.
Вы смешиваете два разных способа создания установки wix здесь:
-
Вы можете напрямую использовать инструменты командной строки candle.exe
и light.exe
. Это игнорирует файл .wixproj
. Это то, что вы делаете в своем nant build script. Чтобы передать значения для переменных препроцессора, таких как $(var.MyProject.TargetDir)
, используйте такие параметры, как -dMyProject.TargetDir=c:\foo
.
-
Вы можете создать файл .wixproj с обьективным (надстройка visual studio для wix). Как и все файлы проекта visual studio, файл wixproj на самом деле является файлом msbuild, который можно создать с помощью msbuild.exe
. Переменные типа $(var.MyProject.TargetDir)
автоматически устанавливаются задачами msbuild для создания настроек wix, если существует правильная ссылка на проект.
Я рекомендую вам создать файл wixproj с помощью <msbuild>
nant task. Это гарантирует, что ваша nant-сборка будет работать так же, как при создании установки вручную из визуальной студии.