gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:28:52 26 4
gpt4 key购买 nike

我的应用程序是使用“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。我试图避免的是 - 对我来说,仅针对 [ProgramFilesFolder] 和注册路径来解析到正确位置的独立 64 位 MSI 是不值得的。只要我的程序仍然在 64 位 Windows 上运行 64 位,我真的不在乎它默认安装在“C:\Program Files (x86)”,一些注册表值存在于 Wow6432Node

所以,我的问题是,当我使用 32 位 MSI 在 64 位 Windows 上安装“AnyCPU”程序时,除了默认安装目录是“C:\Program Files (x86) "并且某些注册表值存储在 Wow6432Node 下?

最佳答案

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

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

关于c# - 使用32位MSI在64位Windows上安装 "AnyCPU"程序有什么危害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com