目录和属性/变量之间的关联如何在WiX中工作?

时间:2018-01-23 17:03:01

标签: wix windows-installer

在Wix(3.11)中,似乎存在与Id' ProgramFilesFolder'之间的隐式链接。以及' ProgramFilesFolder'变量。也就是说,具有该id的目录将根据属性值命名。

当我尝试使用" Test"我自己复制它时。目录:

<Property Id="Test" Value="Test"/>

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
     <Directory Id="Test"/>
       ...

我从WiX收到警告,安装程序实际挂起。我也尝试过宣布&#34;测试&#34;作为一个WixVariable,但在这种情况下它的元素被忽略了 - 喵,没有&#34;测试&#34;文件夹已创建。

我的问题是这个隐式链接如何用于WiX变量,但不适用于我自己的?

2 个答案:

答案 0 :(得分:1)

ProgramFilesFolder实际上不是WiX变量或Id。它是Windows Installer标准属性,您无法更改 - 它指的是您正在安装的系统上的32位Program Files路径。您的Test目录将位于Program Files文件夹下。

没有足够的WiX来源查看正在进行的操作,但只是声明这些位置和属性,如果没有安装目录,则不会创建目录。该问题的完整工作示例将非常有用。

答案 1 :(得分:0)

您不需要为目录定义单独的属性,目录的ID也可以作为属性使用,因为directories are properties。如果属性(目录标识)全部为大写,则变为public property,可以从命令行设置。

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
     <Directory Id="TEST" Name="Test" />
       ...

command line

设置TEST目录的安装路径
msiexec /i A:\Example.msi TEST=c:\Example\Test /qn

目录ID“ProgramFilesFolder”有点不同,因为它是Windows安装程序预定义的System Folder Properties之一。

您应该为TEST目录指定一个名称。见Directory Element

如果此目录表示与父目录相同的目录,请不要指定此属性(或LongName属性)(有关“。”运算符的详细信息,请参阅Windows Installer SDK的目录表主题)。