在我的 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/