在WiX中禁用WIN64DUALFOLDERS替换

时间:2015-02-13 01:13:44

标签: windows wix x86 64-bit

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

  1. 安装我的产品的x86 / x64 MSI文件。
  2. 部署第三方工具包的x86 MSI文件
  3. 我希望第二个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的范围内)过多地设置我的设置,所以我的问题是:

    有没有办法可以避免/禁用此行为并让我的x86 MSI文件信任我并写入“Program Files”,而不是“Program Files(x86)”?

1 个答案:

答案 0 :(得分:2)

不,它无法禁用。 MSI强制执行其规则,即32位程序包无法写入文件系统(和注册表)的64位部分。