在 WiX 中禁用 WIN64DUALFOLDERS 替换
Disable WIN64DUALFOLDERS substitution in WiX
我有一个链接 2 个 MSI 文件的设置:
- 安装我的产品的 x86/x64 MSI 文件。
- 部署第三方工具包的 x86 MSI 文件
我希望第二个 MSI 文件使用相同的安装目录,因此 MSI 文件 1 将用户选择的目录存储在注册表中,然后 MSI 文件 2 读取该目录并将其用作目标。
很好,花花公子 - 如果我将 MSI 文件 1 安装到 C:\Test\
没问题 - MSI 文件 2 会选择它并将工具包放入该文件夹。
然而,当我安装到 C:\Program Files
时......然后 MSI 文件 2 变得有点聪明,并决定我一定是指 C:\Program Files (x86)
并将工具放在那里 - 有点乱。
它会在执行时记录此信息:
Action start 16:53:59: AppSearch.
MSI (c) (2C:44) [16:53:59:521]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (c) (2C:44) [16:53:59:521]: WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\Manufacturer\Product' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0).
MSI (c) (2C:44) [16:53:59:521]: PROPERTY CHANGE: Adding INSTALLDIRECTORY property. Its value is 'C:\Program Files (x86)\Manufacturer\Product'.
Action ended 16:53:59: AppSearch. Return value 1.
我希望避免使用 x64 版本的 MSI 文件 2(它在 20 MB 左右)使我的设置过多膨胀,所以我的问题是:
有什么方法可以 avoid/disable 这种行为并让我的 x86 MSI 文件信任我并写入 "Program Files",而不是 "Program Files (x86)"?
不,它不能被禁用。 MSI 强制执行其规则,即 32 位程序包不能写入文件系统(和注册表)的 64 位部分。
我有一个链接 2 个 MSI 文件的设置:
- 安装我的产品的 x86/x64 MSI 文件。
- 部署第三方工具包的 x86 MSI 文件
我希望第二个 MSI 文件使用相同的安装目录,因此 MSI 文件 1 将用户选择的目录存储在注册表中,然后 MSI 文件 2 读取该目录并将其用作目标。
很好,花花公子 - 如果我将 MSI 文件 1 安装到 C:\Test\
没问题 - MSI 文件 2 会选择它并将工具包放入该文件夹。
然而,当我安装到 C:\Program Files
时......然后 MSI 文件 2 变得有点聪明,并决定我一定是指 C:\Program Files (x86)
并将工具放在那里 - 有点乱。
它会在执行时记录此信息:
Action start 16:53:59: AppSearch.
MSI (c) (2C:44) [16:53:59:521]: Note: 1: 2262 2: Signature 3: -2147287038
MSI (c) (2C:44) [16:53:59:521]: WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\Manufacturer\Product' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0).
MSI (c) (2C:44) [16:53:59:521]: PROPERTY CHANGE: Adding INSTALLDIRECTORY property. Its value is 'C:\Program Files (x86)\Manufacturer\Product'.
Action ended 16:53:59: AppSearch. Return value 1.
我希望避免使用 x64 版本的 MSI 文件 2(它在 20 MB 左右)使我的设置过多膨胀,所以我的问题是:
有什么方法可以 avoid/disable 这种行为并让我的 x86 MSI 文件信任我并写入 "Program Files",而不是 "Program Files (x86)"?
不,它不能被禁用。 MSI 强制执行其规则,即 32 位程序包不能写入文件系统(和注册表)的 64 位部分。