WIX Undefined Preprocessor 변수
-
20-09-2019 - |
문제
C# 프로젝트의 MSI를 생성하기 위해 자동화 된 빌드를 수행하기 위해 Wix를 사용하기 시작했고 오류가 발생합니다. "정의되지 않은 사전 처리기 변수 '$ (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>
이것은 MSI를 만드는 데 사용하는 나의 nant 빌드 스크립트입니다. .wixproj가 빌드에 사용되지 않은 프로젝트 참조에 대해 알고 있기 때문일 수 있습니까?
<exec basedir="${tools.wix}" managed="true" program="candle.exe">
<arg line='-out "${tools.wix.objfile}"' />
<arg value="../MySetup.wxs" />
</exec>
누구든지 나를 깨달을 수 있습니까?
해결책
당신이 이미 언급했듯이, 당신의 nant 빌드 스크립트는 wixproj
전혀 파일.
여기에서 Wix 설정을 구축하는 두 가지 방법을 혼합하고 있습니다.
당신은 사용할 수 있습니다
candle.exe
그리고light.exe
명령 줄 도구 직접. 이것은 무시합니다.wixproj
파일. 이것은 당신이 당신의 nant 빌드 스크립트에서하고있는 일입니다. 전처리 변수와 같은 값을 전달합니다$(var.MyProject.TargetDir)
, 같은 옵션을 사용합니다-dMyProject.TargetDir=c:\foo
.봉헌 (Wix 용 Visual Studio Add-On)으로 .wixproj 파일을 작성할 수 있습니다. 모든 Visual Studio Project 파일과 마찬가지로 WixProj 파일은 실제로 빌드 할 수있는 MSBuild 파일입니다.
msbuild.exe
. 같은 변수$(var.MyProject.TargetDir)
올바른 프로젝트 참조가 존재하는 경우 WIX 설정을 구축하기위한 MSBuild 작업에 의해 자동으로 설정됩니다.
나는 당신이 wixproj 파일을 빌드하는 것이 좋습니다 <msbuild>
넌트 작업. 이렇게하면 Nant 빌드가 Visual Studio에서 수동으로 설정을 빌드 할 때와 동일하게 수행 할 수 있습니다.