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

Ste*_*zzi 5 wix wix3.5

我有一些dll编译在.Net3.5或.Net4.0中.(它们具有相同的名称)
在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>
Run Code Online (Sandbox Code Playgroud)

我在编译过程中出错:错误LGHT0204:ICE30:目标文件......由LFN系统上的两个不同组件安装在......:
似乎我有一个问题,因为文件名是相同的...
是有办法管理这个吗?谢谢!

Rob*_*ing 8

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

  • 我曾经为一些非常大的安装人员工作,甚至忽略警告也是有问题的,因为很难知道你何时有误报或真正的问题.我们是真正坚持认可的人. (2认同)

Chr*_*ter 5

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