2013-03-20 6 views
5

.Net3.5 또는 .Net4.0에서 컴파일 된 일부 DLL이 있습니다. (그들은 같은 이름을 가지고 있습니다)
wix에는 2 개의 조건부 기능이 있습니다.
기능 A는
기능 B는 .net4.0는 하나의 기능이 설치되어, 상호 독점입니다 ComponentRef 아이디 = "Cmp40"
특징으로 dll을 설치합니다 ComponentRef 아이디 = "Cmp35"내 응용 프로그램의 .net3.5 DLL을 설치합니다.Wix에서 같은 이름의 파일을 관리하는 방법은 무엇입니까?

내 구성 요소 : 오류 LGHT0204 : ICE30 :

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
     <DirectoryRef Id="INSTALLDIR"> 
      <Component Id="Cmp35" Guid=".."> 
       <File Id="Behaviors.Assembly" Name="$(var.Behaviors.v3.5.gen.TargetFileName)" Source="$(var.Behaviors.v3.5.gen.TargetPath)" /> 
       <File Id="Other.Assembly" Name="$(var.Other.v3.5.gen.TargetFileName)" Source="$(var.Other.v3.5.gen.TargetPath)" /> 
      </Component> 
      <Component Id="Cmp40" Guid="..."> 
       <File Id="Behaviors.Assembly.4.0" Name="$(var.Behaviors.v4.0.gen.TargetFileName)" Source="$(var.Behaviors.v4.0.gen.TargetPath)" /> 
       <File Id="Other.Assembly.4.0" Name="$(var.Other.v4.0.gen.TargetFileName)" Source="$(var.Other.v4.0.gen.TargetPath)" /> 
      </Component> 
     </DirectoryRef> 
    </Fragment> 
</Wix> 

나는 컴파일하는 동안 오류가 대상 파일을 ... LFN 시스템에 두 개의 서로 다른 구성 요소에 ... 설치됩니다
파일 이름이 같기 때문에 문제가있는 것 같습니다 ...
관리 방법이 있습니까? 감사!

+0

내가하는 유일한 차이점은 구성 요소에 조건이 있다는 것입니다. 이게 효과가 있니? –

답변

7

이것은 ICE30의 경고입니다. 구성 요소가 실제로 상호 배타적이라는 것을 확인한 경우 귀하가 말한 내용을 수행했기 때문에 경고를 무시할 수 있습니다. :)

+0

감사합니다. Rob! 그리고 윅스 (Wix)에 대한 훌륭한 업적을 계속 지키십시오 .-) –

+2

필자는 정말로 큰 설치자를 작업했고 경고조차도 무시해도 문제가있었습니다. 거짓 긍정이나 실제 문제가있을 때를 알기가 어렵 기 때문입니다. 우리는 유효성 검사를 한 진짜 약자였습니다. –

4

일반적으로 파일을 다른 하위 디렉터리에 설치 한 다음 CopyFile 요소 (DuplicateFile 테이블)를 사용하여 파일을 원하는 디렉터리에 복제하면 ICE30 경고가 발생합니다. 이는 기능이나 구성 요소가 상호 배타적이며 ICE가 조용하기를 바랄 때 잘 작동합니다.

+0

답변 해 주셔서 고맙습니다. 나는이 생각을 명심한다. –

+0

좋은 해결책 - 이것을 사용하겠습니다. – abbottdev

관련 문제