使用wix工具编辑文件

时间:2017-08-21 09:41:32

标签: .net installation wix windows-installer

我想用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>

2 个答案:

答案 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,则可能会更难。)