我想用WiX Toolset创建一个设置文件。 为此,我使用目录上的Heat工具生成解决方案。当我想从该解决方案编辑web.config文件时出现问题。
编译时我总是遇到这个错误。
严重级代码描述项目文件行抑制状态 错误ICE30:目标文件' jn9q_isq.con | web.config'安装在' [TARGETDIR] \ inetpub \ vTimeEngineAPI \'通过LFN系统上的两个不同组件:' InstallWebConfigTe'和' cmpA228938071CAE6FF139C38D6724F819B'。这会破坏组件引用计数。 vTimeMainSetup C:\ TSVtime \ NewTimeAPISetup \ Features \ vTimeEngineFeature.wxs 40
这是我获取和编辑文件的代码:
<ComponentGroupRef Id="File.Generated"/>
<Component Id="InstallWebConfigTe" Guid="*">
<File Id="WebConfigTe" Name="web.config" Source="SourceDir\Web.config" Vital="yes" KeyPath="yes" />
<util:XmlFile Id="WebConfigSetDbTypeTe" Action="setValue" Permanent="yes" File="[#WebConfigTe]"
ElementPath="/configuration/Configuration/Database/add[\[]@key='ServerKind'[\]]" Name="value" Value="[DATABASE_TYPE]" />
</Component>
答案 0 :(得分:1)
也许你可以尝试在这个答案中找到的建议(只是我发现的第一个有点意义的建议):WiX ICE30 error but directory is correct。
您的WiX源提取太小,无法判断这是否是问题。只需在 Orca 中打开已编译的MSI,即可验证目录表中是否存在此问题。
您是否有机会安装多个版本的web.config?如果是这样,也许尝试阅读这个答案(阅读所有答案):How to manage files with same name in Wix?
答案 1 :(得分:0)
我认为你说热量已经收获了与手动创建组件相同的文件。
如果要修改heat生成的创作,可以将其传递给XSLT(-t参数),以将util:XmlFile元素添加到相应的Component元素中。
或者,您可以让XSLT删除Component并保留手动创建的Component。 (如果生成的创作包含Component的ComponentRef,则可能会更难。)