2009-09-25 3 views
3

그래서 여러 개의 wxs 파일이있는 병합 모듈을 만들려고합니다. 프로젝트를 성공적으로 구축 한 이후로 모든 것이 괜찮다고 생각했습니다. 나중에 보조 wxs 파일 중 하나에 대해 Source 속성에 사용 된 경로가 완전히 잘못되었음을 알았지 만 컴파일러가 다음 오류를주지 못했습니다.Wix : 여러 개의 wxs 파일이있는 모듈 병합

'.. \ .. \ release_area \ WrongPath \ Component2.dll '에 있습니다. 보조 WXS 파일에서

는, I는 두 파일 사이의 참조를 생성하는 메인 WXS 파일 폴더를 AssemblyFolder를 참조하는 DirectoryRef 요소를 추가했다.

홈페이지 WXS는 파일 :

<Module Id="MyModule" Language="1033" Version="1.0.0.0"> 
    <Package InstallerVersion="200" Platform="x86"/> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="AssemblyFolder"> 
      <Component Id="Component1.dll"> 
      <File Id="Component1.dll" Name="Component1.dll" 
      KeyPath="yes" Assembly=".net" 
      Source="..\..\release_area\Comp\Component1.dll" /> 
     </Component> 
     </Directory> 
    </Directory> 
</Module> 

차 WXS는 파일 :

<Fragment> 
    <DirectoryRef Id="AssemblyFolder"> 
     <Component Id="Component2.dll"> 
     <File Id="Component2.dll" Name="Component2.dll" 
      KeyPath="yes" Assembly=".net" 
      Source="..\..\release_area\WrongPath\Component2.dll" /> 
    </Component> 
    </DirectoryRef> 
</Fragment> 

그냥 명확히하기 : 테스트하기 위해, 나는 복사 내 <Component Id="Component2.dll"> 내가 가진 직접 메인 WXS에와 오류 : '.. \ .. \ release_area \ WrongPath \ Component2.dll'파일을 찾을 수 없습니다.

제 생각에 2 차 wxs 파일과 주 wxs 파일 사이의 참조가 완전히 잘못되어 컴파일러가 파일 경로의 유효성을 검사하지 못해서 문제가 무엇인지 파악할 수 없습니다.

답변

5

문제는 컴파일러 (candle.exe)에 없습니다. Candle.exe는 별도의 "섹션"을 만듭니다 (모듈 및 단편은 모두 "섹션"입니다). 링커 (light.exe)는 모두 함께 처리합니다. Light.exe는 "입력 섹션"(제품, 모듈 또는 패치)에서 시작하여 거기에서부터 참조를 따라갑니다. 당신이 당신의 Secondary.wxs로 Main.wxs에서 참조가 없기 때문에, Secondary.wxs에서 물건을 당겨되지 않습니다이 문제를 해결하려면 단지 추가합니다.

모듈 아래 어딘가에 <ComponentRef Id="Component2.dll"/>

요소 (보통 나는 끝에 넣는다). Component를 많이 얻으면 ComponentGroup과 ComponentGroupRef가 유용 해집니다.

+0

고맙습니다. 그것은 매력처럼 작동합니다. 이제 낡은 Wise 설치 프로그램을 Wix로 변환 할 수 있습니다. –

관련 문제