在我的wxi文件中,我想设置一个包含Program Files目录的变量。我希望它选择Program Files的本地化值。
<?define MyDirectory="!(wix.LocalizedProgramFilesFolder)\MyFiles"?>
我已将LocalizedProgramFilesFolder定义为:
<WixVariable Id="LocalizedProgramFilesFolder" Value="[ProgramFilesFolder]"/>
但是在安装过程中,MyDirectory选为:
"[ProgramFilesFolder]\MyFiles".
它不会扩展ProgramFilesFolder。 如何在我的wxi文件中的变量中使用ProgramFilesFolder值?
答案 0 :(得分:7)
不确定您使用MyDirectory
变量的原因。正如WixVariable docs所说:
WiX变量不会持久存储在msi / msm / pcp文件中,因此它们不能 在安装MSI文件时使用;这是一个仅限WiX的概念。
将其值作为文本写入您使用它的任何位置。因此,如果您希望值在安装时替换属性,则必须仅在此类上下文中使用它。
ProgramFilesFolder的典型用法是Directory / @ Id,它可以有后代目录,例如MyFiles
。注意:Directory / @ Id也是一个属性,因此可以这样使用。
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="MyFiles" />
</Directory>
</Directory>
使用 INSTALLFOLDER
代替MyDirectory
。您可以使用任何您想要的但是项目模板中的默认值。全部上限,使其成为公共财产。公共属性值可以从UI或使用msiexec
或其他程序(如引导程序)传递到安装程序序列中。