如何在Wix中管理具有相同名称的文件?

时间:2013-03-20 15:38:34

标签: wix wix3.5

我在.Net3.5或.Net4.0中编译了一些dll。 (他们有相同的名字)
在wix中,我有2个条件特征 功能A安装我的应用程序的.net3.5 dll与ComponentRef Id =“Cmp35”
功能B安装.net4.0 dll,ComponentRef Id =“Cmp40”
功能是互斥的,只安装了一个功能。

我的组件:

<?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系统上的两个不同组件安装在......中:
看来我有一个问题,因为文件名是相同的...
有办法管理这个吗?谢谢!

2 个答案:

答案 0 :(得分:8)

这些只是ICE30的警告。如果您确认组件是真正互斥的,那么您可以忽略警告,因为您按照他们告诉您的方式执行了操作。 :)

答案 1 :(得分:5)

我通常通过将文件安装到不同的子目录然后使用CopyFile元素(DuplicateFile表)将文件克隆到所需目录来解决ICE30警告。当您的功能或组件相互排斥并且您希望ICE安静时,这种方法很有效。