【问题标题】:WIX multiple copies of same file in msi but only one will be installed在 msi 中 WIX 同一文件的多个副本,但只会安装一个
【发布时间】:2011-01-04 15:55:51
【问题描述】:

我有多个环境,构建、测试、生产等。

我想在 wix 中创建一个安装程序,它可以容纳多个 machine.config 文件。然后根据通过命令行传入的特性值只安装一个文件。

从概念上讲,这听起来很简单,但我收到一个 ICE30 错误说明

“ICE30:目标文件 'btfrgsa_|[FILENAME]' 由 LFN 系统上的两个不同组件安装在 '[TARGETDIR]\NETFRAMEWORK40FULLINSTALLROOTDIR64\CONFIG\' 中:'MachineConfigs.WS' 和 'MachineConfigs.APP'。这会破坏组件引用计数。”。

最好的方法是什么?

谢谢

Semaj

【问题讨论】:

  • 您是否尝试查看条件语句。这可能比您选择的答案更容易。

标签: wix wix3.5


【解决方案1】:

几种方法:

  1. 使用不同名称的文件(1.config、2.config)创建多个功能和组件,然后使用 CopyFile 元素将 x.config 复制到真实文件名。 ) 这将导致 x.config 和 real.config 被部署,但它是无害的,并且卸载将正常工作。

  2. 识别 x.config 之间的差异,并使用 XML 更改在安装时使用 xpath 语句应用它们。

【讨论】:

  • +1 对于使用 XMLConfig:它可能需要更多的前期工作,但从长远来看它会更干净。
  • 我意识到这是为 wix 标记的,但是对于 InstallShield 是否有类似的解决方案,编号为 1?或者同样好,解释一下这个解决方案使用了哪些 msi 表(MoveFile?)?
  • WiX 文档引用了 WiX XSD 中每个元素的相关 MSI 表名称。对于 InstallShield,您可以在组件视图中编写组件条件。对于 CopyFile 内容,您可以在组件下深入了解 Advanced Settings |其他数据,然后单击 DuplicateFile 链接。这会将您带到直接编辑器中的 DuplicateFile 表。
  • @ZacharyYoung 有一个用于 XML 转换的地方,但它是以自定义操作为代价的。如果用例支持文件 A 或文件 B,这将更简洁,因为它只是安装一个或另一个文件的功能,无需任何自定义操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多