WiX 3.0合并模块:Source属性的含义

时间:2010-05-17 10:12:26

标签: installer wix windows-installer wix3

Source属性的目的是什么?看看这个片段:

<Component Id="MyComponent" Guid="123456789-abcd-defa-1234-DCEA-01234567890A">
          <File Id="myFile" Name="myFile.dll" Source="myFile.dll"/>
</Component>

由于Name和Source具有相同的值,Source添加了什么?没有它,代码不能编译。

在哪里可以找到解释这些属性的文档?我为MSI尝试了MSDN,但没有找到答案。

感谢。

2 个答案:

答案 0 :(得分:2)

WiX和MSI不一样。因此在MSDN文档中没有引用;)

您需要参考安装了WiX的 WiX.CHM online WiX documentation

假设您正在谈论File/@NameFile/@Source,如果源文件的布局方式与WiX目录结构相同,则这是可选的。

当您在-b属性中对lightSourceDir使用多个File/@Source参数时,会出现这个漂亮的部分。例如......

<File Id="example.dll" KeyPath="yes" Source="SourceDir\example.dll" DefaultLanguage="0" />

我通常在标准版本中指定4个带-b的文件夹。一个用于各种安装程序特定资源,一个用于存储合并模块,一个用于我所有安装之间的公共资源,另一个用于我的源文件。现在,WiX将查看命令行中指定的每个目录,如果我在具有不同目录布局的不同系统上构建,这将使事情变得更加便携。

根据documentation,如果(在您的示例中)myfile.dll位于当前目录中,则可以省略File/@Source属性。

答案 1 :(得分:1)

File / @ Source提供获取文件信息(大小,语言,哈希)的位置,并将其复制到正确的位置(在文件柜中或布置在相对于MSI文件的目录中)。 / p>

如果您不想使用其他名称安装文件,则文件/ @名称是可选的。换句话说,如果文件在构建计算机上以正确的名称存在,只需使用File / @ Source引用它并保留File / @ Name。

文件/ @Id也是可选的,只要您的文件名是唯一的。您不能拥有两个具有相同File / @ Id的文件,因此在发生冲突时添加File / @ Id。

在WiX v3.5中,我经常这样做:

<Component> <File Source="my.exe"/> </Component>