2011-08-02 5 views
10

기본 설정은 다음과 같습니다. 필자는 더 큰 MSI에 개별 조각을 묶는 기존 WIX 프로젝트를 보유하고 있습니다. 설치하려는 개별 부분을 선택할 수 있도록 프로젝트를 변경하려고합니다. 내가 실행 한 프로그램은 개별 구성 요소를 만들기 위해 더 작은 디렉토리에서 열을 가했을 때 소스 경로가 올바르지 않다는 것입니다. 나는 더 많은 이해가되기를 바랍니다.Wix 열 출력이 내가 원하는 디렉토리를 참조하지 않습니다.

C : \ PROJDIR \ 푸 \ BAR1
C : 나는에 명령에 사용 된 \ PROJDIR \ 푸 \ BAR2

단순히 C 수확

그래서 나는이 같은 기본 폴더 구조를 가지고 : \ Foo (Heat.exe dir Foo -dr FOO_DIR_REF -out File.wxs) 이제 각 개별 Bar 폴더를 수확하도록 변경했습니다 (Heat.exe dir Foo \ Bar1 -dr BAR1_DIR_REF -out File1.wxs). (Heat.exe doo Foo \ Bar2 -dr BAR2_DIR_REF -out File2.wxs). 제가하는 데 문제는 수확의 출력은 다음과 같습니다이다 :

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Bar1\file.here" /> 
</Component> 

을 그리고 MSI 구축을 위해 노력 때 SOURCEDIR \ BAR1을 찾을 수 없기 때문에이 뿌려줍니다. 나는 짓을했는지 내가 쉽게 이루어집니다 확신 것을,

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="SourceDir\Foo\Bar1\file.here" /> 
</Component> 

이것은 매우 간단한 문제처럼 보이지만, 모든 검색 오지 않았다 : 기본적으로 내가 필요한 것은 다음과 같이 보일 수 있도록하는 방법이다 아무것도 유용한.

답변

13

light.exe -b Foo ... 
+2

이것은 내가 필요한 것입니다. 고마워. 여러 개의 -b도 지정할 수 있다는 것을 알고 있습니다. – Zipper

2

이 가능

<Component Id="cmpblablabla" Guid="{stuff-here}"> 
    <File Id="filblabla" KeyPath="yes" Source="$(var.ProjectName.TargetPath)\Bar1\file.here" /> 
</Component> 

다른 속성해야 있습니다

  • $ (var.ProjectName.TargetPath)
  • $ (var.ProjectName.ProjectDir)
+4

열을 사용하는 방법을 알고 계십니까? 나는 - var var.ProjectName.TargetPath가 나에게 첫 번째 부분을 가져다 줄 것을 알지만, 내가 필요로하는 것은 Bar1이며 열을 통해 그 일을 할 수있는 방법을 찾지 못했다. 수동으로 파일을 편집 할 수 있지만 자동화 된 방식으로이 작업을 수행하려고했습니다. – Zipper

2

귀하의 질문에 대한 답변은 모두 heat.exe 도움말 텍스트에 있습니다. :-)

올바른 디렉토리 수확으로 끝나기 위해서는 루트 디렉토리 (Foo)로 열을 지정하고 명령 줄에 -srd 스위치를 지정하십시오. 도움말 텍스트에서 알 수 있듯이 루트 디렉토리를 생략하면 필요한 결과가 발생할 가능성이 큽니다.

더 많은 유연성을 위해 SourceDir 명시 적 구문을 대체 할 WiX 변수를 제공하는 -var 스위치를 지정할 수 있습니다. 다시 한 번 heat.exe을 실행하고 출력을 살펴보면 충분한 정보와 예제를 찾을 수 있습니다. 당신이 -b

예와 검색 경로에 추가 할 경우 light이 파일에 대한 추가 SourceDir 's을 (를) 검색 할 것이라는 점을

관련 문제