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

标签 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 值?

最佳答案

不知道您为什么使用 MyDirectory多变的。作为WixVariable docs说:

WiX variables do not persist into the msi/msm/pcp file, so they cannot be used when an MSI file is being installed; it's a WiX-only concept.



它的值以文本形式写入您使用它的任何地方。因此,如果您希望在安装时替换该值的属性,则必须仅在这样的上下文中使用它。

ProgramFilesFolder 的典型用法是作为 Directory/@Id,它可以有一个后代 Directory,例如 MyFiles .注意: Directory/@Id 也是一个属性,因此可以这样使用。
  <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
          <Directory Id="INSTALLFOLDER" Name="MyFiles" />
      </Directory>
  </Directory>
INSTALLFOLDER用于代替 MyDirectory .您可以使用任何您想要的,但项目模板中的默认值。都是大写,这使它成为公共(public)属性(property)。可以从 UI 或使用 msiexec 将公共(public)属性值传递到安装程序序列中。或其他程序,例如 Bootstrap 。

关于wix - 如何在 wxi 文件的变量中使用 ProgramFilesFolder 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17677693/

相关文章:

Wix 安装程序包产生损坏的 "msi"

visual-studio - 在 Visual Studio 中,是否可以阻止并行构建解决方案中的某些项目?

WIX : Substitution in 'C:\Program Files (x86)\XXX' folder had been blocked by the 1 mask argument (the folder pair's iSwapAttrib member = 0)

wix - 让 WiX/Burn 检测所需的 .NET Framework 版本

wix - 错误 4 : SELECT `Message` FROM `Error` WHERE `Error` = 1707 (also 1709)

wix - 如何使用wixharvesting工具生成一致的GUID

wix - 我如何在 WiX 安装程序脚本中实际使用 LinkerBindInputPaths PropertyGroup

如果在同一棵树中多次使用 WiX DirectorySearch/@Depth 将被忽略

visual-studio-2013 - WiX:VS2013 如何更改输出目录

WIX CustomAction - 如何在安装/日志中获取更多信息