Wix 工具集 - 将属性设置为用户配置文件文件夹路径和程序文件

Posted

技术标签:

【中文标题】Wix 工具集 - 将属性设置为用户配置文件文件夹路径和程序文件【英文标题】:Wix Toolset - Setting a Property to User Profile Folder path and Program Files 【发布时间】:2013-07-06 06:31:52 【问题描述】:

我正在使用属性来设置注册表项的值。这样在第一次安装时我有一个默认值,然后在升级时使用当前的注册表值。

我需要一个属性来设置用户本地文件夹和程序文件夹的路径。我知道下面的代码是错误的,但我该怎么做。我想至少我想做一个 Type 51 自定义操作,但不理解文档。

我相信有三个相关部分

<InstallExecuteSequence>
    <Custom Action="SetUserFolder" Before="InstallInitialize"/>
    <Custom Action="SetInstallFolder" Before="InstallInitialize"/>
</InstallExecuteSequence>

自定义操作

<CustomAction Id="SetUserFolder" Property="UserFolder" Value="[%USERPROFILE]" />
<CustomAction Id="SetInstallFolder" Property="P_InstallFolder" Value="[%PROGRAMFILES]" />

属性。

<Property Id="P_MyAPPPATH" Value="[P_InstallFolder]MyApp\">
    <RegistrySearch Id="S_MyAppPath" Type="raw" Root="HKCU" Key="Software\MyApp\Settings" Name="MyAppPath"/>
</Property>
<Property Id="P_MyAPPDB" Value="[UserFolder]\MyApp\MyAppData\">
    <RegistrySearch Id="S_MyAPPDB" Type="raw" Root="HKCU" Key="Software\MyApp\Settings" Name="MyAppdb"/>
</Property>

【问题讨论】:

【参考方案1】:

作为使用您定义的属性的替代方法,您可以使用一些内置属性来获得更好的效果。

请考虑LocalAppDataFolder,而不是 %USERPROFILE。当用户在网络域上的机器之间漫游时,这将避免您的数据在机器之间被复制。我猜你不需要那个,但如果你需要,请使用AppDataFolder 并注意所涉及的延迟。

请考虑 ProgramFilesFolder,而不是 %PROGRAMFILES。这似乎是您想要的。

【讨论】:

是的,是的,我很想使用它们。问题是如何将它们作为 Property 属性的默认属性?

以上是关于Wix 工具集 - 将属性设置为用户配置文件文件夹路径和程序文件的主要内容,如果未能解决你的问题,请参考以下文章

Wix 工具集 - 参考二进制文件 - 单独的 wxs 文件

如何获取用户在安装 WIX 设置时输入的属性值?

使用 wix 安装程序,当用户在编辑框中输入内容时安装时我如何在设置过程中覆盖配置文件

在 WIX 迁移中管理用户配置

WiX:CopyFile 属性

Wix - 自定义操作返回代码 - 处理