在 WiX 中禁用 WIN64DUALFOLDERS 替换

Disable WIN64DUALFOLDERS substitution in WiX

我有一个链接 2 个 MSI 文件的设置:

  1. 安装我的产品的 x86/x64 MSI 文件。
  2. 部署第三方工具包的 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 位部分。