我在.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系统上的两个不同组件安装在......中:
看来我有一个问题,因为文件名是相同的...
有办法管理这个吗?谢谢!
答案 0 :(得分:8)
这些只是ICE30的警告。如果您确认组件是真正互斥的,那么您可以忽略警告,因为您按照他们告诉您的方式执行了操作。 :)
答案 1 :(得分:5)
我通常通过将文件安装到不同的子目录然后使用CopyFile元素(DuplicateFile表)将文件克隆到所需目录来解决ICE30警告。当您的功能或组件相互排斥并且您希望ICE安静时,这种方法很有效。