8

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

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

我已将 LocalizedProgramFilesFolder 定义为:

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

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

"[ProgramFilesFolder]\MyFiles".

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

4

1 回答 1

7

不确定为什么要使用MyDirectory变量。正如WixVariable 文档所说:

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

于 2013-07-16T17:23:12.097 回答