在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变量,但不适用于我自己的?
答案 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" />
...
设置TEST目录的安装路径
msiexec /i A:\Example.msi TEST=c:\Example\Test /qn
目录ID“ProgramFilesFolder”有点不同,因为它是Windows安装程序预定义的System Folder Properties之一。
您应该为TEST目录指定一个名称。见Directory Element:
如果此目录表示与父目录相同的目录,请不要指定此属性(或LongName属性)(有关“。”运算符的详细信息,请参阅Windows Installer SDK的目录表主题)。