2009-10-13 3 views

답변

11

\ 예는 간단하게 여러 구성 요소를 만들 동일한 파일을 참조하지만 다른 위치에 설치하십시오. 유일한 차이점은 두 개의 <File Source="somefile"/> 요소가 동일한 자동 생성 ID를 가지므로 동일한 파일을 참조 할 수 없다는 것입니다. 명시 적으로 파일 요소에 다른 ID를 부여하여 문제를 피하십시오.

<DirectoryRef Id="directory1"> 
    <Component Id="somefile-component1"> 
     <File Id="somefile-id1" Source="/path/to/somefile"/> 
    </Component> 
</DirectoryRef> 

<DirectoryRef Id="directory2"> 
    <Component Id="somefile-component2"> 
     <File Id="somefile-id2" Source="/path/to/somefile"/> 
    </Component> 
</DirectoryRef> 
+0

그래, 나는 내가 그것을 할 수있는 생각 kindda : WIX에서 당신은 CopyFile 수의 요소를 통해이를 구현 하지만 그게 고통스러운, 그것은 별도의 ID와 GUID 등을 의미합니다. 다른 옵션은 CopyFile입니다. 그렇지만 제거를 처리해야합니다. –

+0

참조 된 각각을 정의하는 여러 설치 프로그램에서 동일한 구성 요소를 사용할 수도 있습니다 디렉토리 다르게. 그러나 여러 개의 MSI 파일이 생성됩니다. 그 접근법을 자세히 설명해 주시겠습니까? –

+2

나는이 결과가 내가 효과적으로 끝내기 때문에이 대답을 받아 들일 것이다. 나는 모든 중복에 대한 아이디어가 마음에 들지 않아서 나를 위해 Wix xml을 생성하고 자동으로 복사를 처리하는 프로그램을 작성하는 것을 끝내었다. wix와 같은 느낌은 너무 원시적이며 설치 프로그램을 작성하는 데 더 높은 수준의 추상화가 필요합니다. –

7

Windows Installer에는 "DuplicateFiles"라는 자체 개념이 있습니다. 파일이 실제로 동일한 경우에만 작동하지만 원하는대로 들릴 수 있습니다.

http://wix.sourceforge.net/manual-wix2/wix_xsd_copyfile.htm

내가 실제로 그것을 시도하지 않은,하지만 이런 식으로 뭔가를 보일 것

<Component Id='Manual' Guid='*' > 
    <File Id='Manual' Name='Manual.pdf' Source='Manual.pdf' KeyPath='yes'> 
    <CopyFile Id='MyDuplicateFile1' DestinationProperty ='DesktopFolder'/> 
    </File> 
</Component> 
+2

제거시 복사본이 제거됩니까? –

+0

예, 실제로 수행합니다 - 복제를 수행 한 구성 요소가 제거되는 한 영구적으로 설정되지 않았을 수 있습니다. –

관련 문제