使用32位MSI在64位Windows上安装"AnyCPU"程序有什么危害?

sea*_*717 12 c# wix

我的应用程序是使用" Any CPU"配置构建的.构建应用程序的WIX安装程序,platform=x86因此生成的MSI为32位.

当我在64位Windows上运行32位MSI时.该[ProgramFilesFolder]属性被解析为"C:\ Program Files(x86)"并且注册表路径被解析为Wow6432Node.当我运行应用程序时,该过程是64位 - 正如预期的那样.

据我所知,在阅读了很多关于SO的相关帖子后.在64位Windows上,使[ProgramFilesFolder]解析为"C:\ Program Files"和注册表路径为正常路径(不在下Wow6432Node).我需要一个单独的64位MSI.我试图避免 - 对我来说,单独的64位MSI仅用于[ProgramFilesFolder]和regsitry路径来解决纠正位置是不值得的.只要我的程序仍然运行在64位Windows 64位,我真的不关心它安装在"C:\ Program Files文件(x86)的"默认情况下,有些注册表值的存在Wow6432Node.

所以,我的问题是,是否有其他的后果,当我安装在64位Windows使用其他32位微星"AnyCPU"程序不是默认安装目录为"C:\ Program Files文件(x86)的",有的注册表值存储在Wow6432Node

Dav*_*nan 3

唯一可能出现的真正危害是您的程序尝试读取存储在 32 位注册表视图中的值。当然,当作为 64 位进程运行时,它将无法找到它们。如果发生这种情况,您可以简单地使用RegistryView 枚举来强制从32 位视图读取。但我猜你提到的注册表设置与安装程序有关。

事实上,您描述的场景就是我部署应用程序的方式。因为我将 32 位和 64 位版本部署到同一台计算机,并且它们共享一些文件,所以我将所有内容安装到 32 位程序文件中。然后所有注册表访问都针对 32 位视图。如果您希望 32 位和 64 位版本在注册表的重定向部分共享相同的值,那么确实没有其他选择。