2013-03-12 6 views
2

여러 프로젝트에 포함시키고 자하는 DLL 세트를 가리키는 WixLib 프로젝트와 솔루션을 만들었습니다.참조 된 솔루션에서 WixLib 전처리 변수를 변경하려고 시도했습니다.

그러나 다른 솔루션에서이 wixlib를 참조하면 dll이있는 디렉토리의 전 처리기 값이 wixlib와 함께 나타납니다. 이 값을 무시하거나 업데이트하고 싶습니다.

내 Wixlib은 다음과 같습니다

<Fragment> 
    <ComponentGroup Id="CG.FarPointComponents"> 
     <Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR" 
       Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3"> 
     <File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes" 
       Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" /> 
     </Component> 
    </ComponentGroup> 
</Fragment> 

은 내가 무엇을해야 다른 용액에 var.FarPointDir 또 다른 디렉토리를 지정하려면? 나는 윅스 3.6

답변

2

몇 가지 옵션을 사용하고 있습니다 :

  1. binary .wixlib 만들기 - .wixlib에 파일을 포함 할 lit.exe-bf 스위치를 사용하십시오. 그렇게하면 .wixlib은 더 커질 지 몰라도 완전히 자체 포함됩니다.

  2. 사용 bind paths - 바인드 경로는 검색 경로와 비슷하지만 패키지에서 끝내야하는 파일을 찾는 것입니다. File/@Source 상대 주소 (X:\ 또는 단지 \으로 시작하지 마십시오)를 만들면 이름없는 바인드 경로가 검색됩니다. -bp 명령 줄 스위치를 사용하여 light.exe에 대한 바인드 경로를 지정합니다. 또는 당신이 이름을 사용할 수 있습니다 바인드 경로, 그들은 다음과 같이 :

    <File Source='!(bindpath.Name)\FarPoint.CalcEngine.dll' /> 
    

    다시, -bp 스위치라는 이름의 바인딩 경로를 만들 수 있습니다.

  3. 사용 - 전처리 변수 ("컴파일"전에 해결됨) 대신 "바인딩 시간"에서 해결되는 변수를 사용하십시오. 다음과 같은 바인드 변수를 참조 할 수 있습니다. !(wix.Var). 명령 행에서 light.exe으로 설정하거나 WixVariable 요소를 사용하여 코드에서 설정할 수 있습니다. 그냥 내 물건 (바이너리 .wixlibs 빌드를 조금 느린 것)의 경우

내가 다른 사람에게 .wixlibs를 배포하는 옵션 # 1을 사용하고 옵션 # 2 (자체 포함 할 수 있습니다).