【问题标题】:(WiX) Install same file to multiple locations(WiX) 将同一个文件安装到多个位置
【发布时间】:2013-06-19 23:55:04
【问题描述】:

对于我产品中的多个文件,我需要在安装时将它们复制到两个不同的目标位置。例如:

C:\Program Files (x86)\My Company\My App\foo\xyzzy.txt
C:\Program Files (x86)\My Company\My App\bar\xyzzy.txt

这两个 xyzzy.txt 副本是相同的。

我不希望在文件柜中保存相同的文件副本而受到影响。在使用 makecab 时,似乎在 cab 中有重复的文件副本实际上会使 cab 的大小增加一倍。相比之下,7zip 设法包含第二个副本,几乎没有大小成本。

是否可以在(嵌入式)文件柜中保存每个文件的副本并将其安装到两个不同的位置?如果是这样,您将如何在 WiX 3.5 中指定它?

我假设拥有两个具有相同 Id 的 File 元素会违反 XML 的规则和/或 WiX 组件规则。另一方面,如果我有独特的文件元素,光会简单地把同一个文件的两个副本放在柜子里吗?

【问题讨论】:

  • 我不认为如果文件在两个 File 元素中使用,它会复制一个文件。您是否尝试过使用与 Tom 建议的 Source 相同的独特 File 元素?
  • 作为旁注。如果文件是并且总是相同的(例如,它们在逻辑上表现为单个组件的一部分),那么您应该使用 CopyFile 表而不是创建 2 个组件。

标签: wix wix3.5


【解决方案1】:

是的,WiX 3 does this 自动。只需在不同的 File 元素中使用相同的 Source 属性。而且,是的,您必须为 File 元素赋予不同的 Id 属性。

【讨论】:

  • 这似乎是答案,但如果在编译时未解析目录,它将无法通过 ICE 验证。我正在执行读取多个注册表项的条件安装。对于安装时存在的每个注册表项,我将在该位置安装文件的副本。我花了一整天的时间来设置它(是的,使用不同的文件 ID),我很确定我做对了。当我编译时,它显示“ICE30:目标文件 '[...]' 由 LFN 系统上的两个不同组件安装在 '[TARGETDIR]\' 中。[...] 这会破坏引用计数。”所以,我无法告诉 Wix t
  • @Jon 这似乎是一个新问题。在注册表搜索之前,组件的目标目录是什么?它们是独一无二的吗?
猜你喜欢
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多