我的应用程序使用“Any CPU
”配置构建。该应用程序的WIX安装程序使用platform=x86
构建,因此生成的MSI为32位。使用32位MSI在64位Windows上安装“AnyCPU”程序有什么危害?
当我在64位Windows上运行32位MSI时。 [ProgramFilesFolder]
属性已解析为“C:\ Program Files(x86)”,注册表路径解析为Wow6432Node
。当我运行该应用程序时,该过程是64位 - 如预期的那样。
据我了解,在阅读了很多关于SO的相关帖子后。在64位Windows上,将[ProgramFilesFolder]
解析为“C:\ Program Files”,并将注册表路径解析为正常路径(不在Wow6432Node
下)。我需要一个单独的64位MSI。我试图避免 - 对我来说,单独使用一个单独的64位MSI仅适用于[ProgramFilesFolder]
,并且注册路径以解决正确位置不值得。只要我的程序仍然在64位Windows上运行64位,我并不关心它在默认情况下安装在“C:\ Program Files(x86)”中,并且某些注册表值存在于Wow6432Node
。
所以,我的问题是,当我在64位Windows上使用默认的32位MSI安装“AnyCPU”程序时,会出现其他的后果,installDir是“C:\ Program Files(x86 )“和一些注册表值存储在Wow6432Node
?
你是否正在注意存储在Wow6432Node中的任何注册表设置正在被您的程序读取而不是原生位置(如果您正在读取它们)? –
为什么不建立这两个,并有32位版本检测64位操作系统,然后执行Setup64.exe并退出如果是true? –
@Scott Chamberlin,我只在注册表中安装了一个值。在64位运行时强制从Wow6432Node读取C#代码比创建另一个安装程序更容易。 – sean717