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