문제

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 설정을 구축하는 두 가지 방법을 혼합하고 있습니다.

  1. 당신은 사용할 수 있습니다 candle.exe 그리고 light.exe 명령 줄 도구 직접. 이것은 무시합니다 .wixproj 파일. 이것은 당신이 당신의 nant 빌드 스크립트에서하고있는 일입니다. 전처리 변수와 같은 값을 전달합니다 $(var.MyProject.TargetDir), 같은 옵션을 사용합니다 -dMyProject.TargetDir=c:\foo.

  2. 봉헌 (Wix 용 Visual Studio Add-On)으로 .wixproj 파일을 작성할 수 있습니다. 모든 Visual Studio Project 파일과 마찬가지로 WixProj 파일은 실제로 빌드 할 수있는 MSBuild 파일입니다. msbuild.exe. 같은 변수 $(var.MyProject.TargetDir) 올바른 프로젝트 참조가 존재하는 경우 WIX 설정을 구축하기위한 MSBuild 작업에 의해 자동으로 설정됩니다.

나는 당신이 wixproj 파일을 빌드하는 것이 좋습니다 <msbuild> 넌트 작업. 이렇게하면 Nant 빌드가 Visual Studio에서 수동으로 설정을 빌드 할 때와 동일하게 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top