2013-03-20 2 views
5

У меня есть dll, скомпилированный либо в .Net3.5, либо в .Net4.0. (У них одно и то же имя)
В wix у меня есть 2 условных объекта.
Feature устанавливает .net3.5 DLL моего приложения с ComponentRef Id = "Cmp35"
Функция B устанавливает .net4.0 DLL с ComponentRef Id = "CMP40"
Особенности взаимно эксклюзивы, устанавливается только одна функция.Как управлять файлами с тем же именем в Wix?

моих компоненты:

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

У меня есть ошибка во время компиляции: ошибки LGHT0204: ICE30: целевой файл ... устанавливаются в ... два различных компонентах на системе LFN:
Кажется, у меня проблема, потому что имена файлов одинаковы ...
Есть ли способ справиться с этим? благодаря!

+0

Я делаю то же самое, единственное различие, которое у меня есть, это то, что в моих компонентах у меня есть условия. Будет ли это работать? –

ответ

7

Это только предупреждения от ICE30. Если вы проверили, что Компоненты действительно взаимоисключающие, вы можете игнорировать предупреждения, потому что вы сделали то, что вам сказали. :)

+0

Спасибо, Роб! и продолжайте свою отличную работу над Wix ;-) –

+2

Я работал над некоторыми действительно большими установщиками, и игнорирование даже предупреждений было проблематичным, потому что трудно понять, когда у вас есть ложный позитив или реальная проблема. Мы были настоящими приверженцами проверки. –

4

Я обычно обдумываю предупреждения ICE30, устанавливая файлы в разные подкаталоги, а затем используя элемент CopyFile (таблица DuplicateFile), чтобы клонировать файл в нужный каталог. Это хорошо работает, когда ваши функции или компоненты являются взаимоисключающими, и вы хотите, чтобы ICE был тихим.

+0

Спасибо за ваш ответ Кристофер. Я помню эту идею. –

+0

Хорошее обходное решение - я буду использовать это. – abbottdev