2013-03-20 14 views
5

Ho alcune DLL compilate in .Net3.5 o in .Net4.0. (Hanno lo stesso nome)
In wix, ho 2 funzioni di condizionale.
Caratteristica Un installa DLL .net3.5 della mia app con ComponentRef Id = "Cmp35"
Caratteristica B installa .net4.0 DLL con ComponentRef Id = "CMP40"
Caratteristiche sono mutuamente esclusive, solo una funzione è installata.Come gestire i file con lo stesso nome in Wix?

miei componenti:

<?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> 

ho un errore durante la compilazione: errore LGHT0204: ICE30: Il file di destinazione ... è installato in ... da due componenti diverse su un sistema LFN:
Sembra che abbia un problema perché i nomi dei file sono uguali ...
C'è un modo per gestirlo? Grazie!

+0

Faccio lo stesso, l'unica differenza che ho è che nei miei componenti ho delle condizioni. Funzionerebbe? –

risposta

7

Questi sono solo avvisi da ICE30. Se hai verificato che i Componenti si escludono a vicenda, puoi ignorare gli avvertimenti perché hai fatto ciò che ti hanno detto di fare. :)

+0

Grazie Rob! e continua con il tuo eccellente lavoro su Wix ;-) –

+2

Ho lavorato su alcuni grandi installatori e ignorare persino gli avvertimenti è stato problematico perché è difficile sapere quando hai un falso positivo o un vero problema. Eravamo veri sticklers con convalida. –

4

In genere mi vengono in mente gli avvisi di ICE30 installando i file in diverse sottodirectory e quindi utilizzando un elemento CopyFile (tabella DuplicateFile) per clonare il file nella directory desiderata. Funziona bene quando le tue caratteristiche o componenti si escludono a vicenda e vuoi che ICE sia silenzioso.

+0

Grazie per la tua risposta, Christopher. Tengo questa idea in mente. –

+0

Buona soluzione: lo userò. – abbottdev

Problemi correlati