使用WiX,如何根据安装时可用的内容将单个文件安装到(可能)多个子目录?

时间:2009-04-09 21:51:51

标签: wix windows-installer

我正在使用WiX,并且想知道获取文件并将其安装到特定位置的每个可用子目录所需的.wx。这可能意味着0个或更多最终安装位置,在安装时根据当前存在的目录结构确定。例如,如果我使用以下命令启动安装:

\target
 \subdir-1
 \subdir-2

然后在安装结束时,我的文件将位于\ subdir-1和\ subdir-2中。另一方面,如果在启动安装时系统上不存在这些目录,则根本不会安装我的文件,也不会创建子目录。

3 个答案:

答案 0 :(得分:3)

Afaik使用WiX是不可能的(因为它基本上违背了将MSI安装到多个位置的MSI的性质)。

你可以

  • 为每个子文件夹创建不同的组件,或
  • 使用自定义操作将组件复制到所有子文件夹。

在后一种情况下,您还应该提供相应的CA进行卸载,从而再次从子文件夹中删除所有文件。

编辑:似乎我的上述答案并不完全正确。 MSI支持使用DuplicateFile表复制文件,WiX 3.0还提供了一种名为"smart cabbing"的机制。 Aaron Stebner在blog post中提到了两者。

答案 1 :(得分:1)

不是没有自定义操作,您需要编写一个自定义操作来执行此操作 最新且最好的自定义操作是Wix3附带的DTFand here)框架。

答案 2 :(得分:1)

如果您定位Vista(或Win2k8,不确定Win2k3),则可以使用mklink