- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的应用程序是使用“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/
当我开始学习 Java 时,有人告诉我不要在 Java EE 应用程序中执行 System.out.println。但是我真的不知道不这样做的原因是什么。 我很清楚如果我们真的需要打印一个重要的,它应
我是一名优秀的程序员,十分优秀!