2011-03-11 6 views
5

C 및 D 드라이브 모두에 ​​파일을 배포해야합니다. 예를 들어 파일 A는 C 드라이브로 이동하고 파일 B는 D 드라이브로 이동합니다. Wix에서는 하나의 루트 디렉토리 만 가질 수 있습니다. 이 일을 수행 할 수있는 방법이 있습니까?WIX에서 두 개의 루트 디렉토리를 가질 수 있습니까?

하나의 해결책은 Wix Xml의 루트 디렉토리로 C를 설정하고 Wix Xml을 통해 C 디렉토리로 이동하는 파일을 배치하는 것입니다. D 디렉터리에 배포해야하는 파일은 사용자 지정 작업을 통해 배포해야합니다.

그러나 사용자 지정 작업을 사용하지 않으려 고하고 같은 Wix XML을 사용하여 (C 및 D 드라이브)에 파일을 배포하려고합니다.

답변

12

전체 디렉토리 구조는 항상 "TARGETDIR"루트에 래핑되어야합니다. 하지만 아무도 당신이 필요로하는 방식으로 나머지 구조를 정의하는 것을 제한하지 않습니다.

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLLOCATION" Name="My location"> 
    ... 
    </Directory> 
    <Directory Id="DATA_FOLDER" Name="Data"> 
    ... 
    </Directory> 
    <Directory Id="DATABASES_FOLDER"> 
    ... 
    <Directory> 
    </Directory> 

지금 당신이 INSTALLLOCATION가 아닌 다른 드라이브에있을 DATA_FOLDER 또는 DATABASES_FOLDER을 설정할 수 있습니다 아래의 샘플을 참조하십시오. 그것은 나를 위해 잘 작동합니다.

+0

예를 들어 DATA_FOLDER를 Windows 디스크가있는 디스크 (시스템 디스크)로 정의하고 Wix에서 기본적으로 정의 된대로 사용할 수있는 최대 드라이브가 아닌 답을 작성할 수 있습니까? – dendini

+0

사용 가능한 가장 큰 드라이브를 사용하는 것은 WiX가 아니라 Windows Installer 동작입니다. 위의 예제는 디렉토리 구조를 정의하며, 예를 들어 DATA_FOLDER를 설정하지 않으면 기본 Windows Installer 동작으로 되돌아갑니다. 당신이해야 할 일은 SetDirectory 커스텀 액션으로 DATA_FOLDER를 정의하거나 커맨드 라인에서 적절한 값을 전달하는 것입니다 :'msiexec/i package.msi DATA_FOLDER = ... ' –

+0

그냥 다른 질문을 읽고, 아마도 WindowsVolume MSI 속성을 찾으려는 것입니다 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa372817.aspx –

관련 문제