首页 > 解决方案 > WIX 使用 32 位 MSI 从注册表中读取 64 位路径

问题描述

当我尝试使用 32 位 MSI 从 64 位机器中的注册表读取 MSaccess.exe 路径时,我运行了以下 WIN64DUALFOLDERS 操作并将属性覆盖到 32 位访问路径,如下所示

MSI (c) (90:98) [13:02:25:495]: WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\Microsoft Office\Root\Office16\' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0).
 MSI (c) (90:98) [13:02:25:495]: PROPERTY CHANGE: Adding MSACCESSREGISTRYPATH property. Its value is 'C:\Program Files (x86)\Microsoft Office\Root\Office16\'.

我想读取 'C:\Program Files' 路径,但它被 WIN64DUALFOLDERS 操作覆盖为 'C:\Program Files (x86)\' 路径。

有没有办法在不使用 32 位 msi 覆盖的情况下获得这个值

标签: wixwindows-installerinstallationinstallshield

解决方案


使用 PROGRAMFILES64 获取 C:\ProgramFiles 路径

“PROGRAMFILES64 系统变量包含由 Windows 定义的文件夹的完全限定名称,用于在 64 位系统上存储 64 位应用程序。(请注意,32 位应用程序存储在 PROGRAMFILES 文件夹下。)在英文 Windows 中,该文件夹名为 Program Files,它位于安装 Windows 的驱动器的根目录之外。(在其他语言版本的 Windows 中,默认情况下,文件夹名称已适当本地化。)程序文件文件夹是应用程序的推荐默认位置文件夹。”


推荐阅读