Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在WiX中禁用WIN64DUALFOLDERS替换_Windows_Wix_X86_64 Bit - Fatal编程技术网

Windows 在WiX中禁用WIN64DUALFOLDERS替换

Windows 在WiX中禁用WIN64DUALFOLDERS替换,windows,wix,x86,64-bit,Windows,Wix,X86,64 Bit,我有一个链接2个MSI文件的设置: 安装我的产品的x86/x64 MSI文件 部署第三方工具包的x86 MSI文件 我希望第二个MSI文件使用相同的安装目录,以便MSI文件1将用户选择的目录存储在注册表中,然后MSI文件2读取并将其用作目标 很好,很好-如果我将MSI文件1安装到C:\Test\没有问题-MSI文件2会将其拾取并将工具包扔到该文件夹中 当我安装到C:\ProgramFiles时,但是。。。然后MSI文件2变得有点聪明,决定我一定是指C:\ProgramFiles(x86),并将工

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

  • 安装我的产品的x86/x64 MSI文件
  • 部署第三方工具包的x86 MSI文件
  • 我希望第二个MSI文件使用相同的安装目录,以便MSI文件1将用户选择的目录存储在注册表中,然后MSI文件2读取并将其用作目标

    很好,很好-如果我将MSI文件1安装到
    C:\Test\
    没有问题-MSI文件2会将其拾取并将工具包扔到该文件夹中

    当我安装到
    C:\ProgramFiles
    时,但是。。。然后MSI文件2变得有点聪明,决定我一定是指
    C:\ProgramFiles(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(在20MB的范围内)使我的设置过于臃肿,因此我的问题是:


    是否有一种方法可以避免/禁用此行为,并使我的x86 MSI文件信任我并写入“程序文件”,而不是“程序文件(x86)”?

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

    Hmm,正如我所想,我最终只有2个MSI。谢谢你的意见。