如何在wxi文件中的变量中使用ProgramFilesFolder值

时间:2013-07-16 13:21:37

标签: wix wix3.7

在我的wxi文件中,我想设置一个包含Program Files目录的变量。我希望它选择Program Files的本地化值。

 <?define MyDirectory="!(wix.LocalizedProgramFilesFolder)\MyFiles"?>

我已将LocalizedProgramFilesFolder定义为:

<WixVariable Id="LocalizedProgramFilesFolder" Value="[ProgramFilesFolder]"/>

但是在安装过程中,MyDirectory选为:

"[ProgramFilesFolder]\MyFiles".

它不会扩展ProgramFilesFolder。 如何在我的wxi文件中的变量中使用ProgramFilesFolder值?

1 个答案:

答案 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或其他程序(如引导程序)传递到安装程序序列中。

相关问题