我们有一个正在尝试在 64 位和 32 位平台上部署的应用程序。有没有办法将代码的两个编译版本放在同一个二进制文件中,比如 Apple 和 NeXT 的胖二进制文件?
理想情况下,我们可以发布一个 .exe 来决定执行哪个版本的代码。我们的目标是 Windows XP 及更高版本。
我们有一个正在尝试在 64 位和 32 位平台上部署的应用程序。有没有办法将代码的两个编译版本放在同一个二进制文件中,比如 Apple 和 NeXT 的胖二进制文件?
理想情况下,我们可以发布一个 .exe 来决定执行哪个版本的代码。我们的目标是 Windows XP 及更高版本。
Process Explorer(以前是 sysinternals,现在归 Microsoft 所有)就是这样做的。它是一个 32 位应用程序,它检测 64 位环境,写出另一个二进制文件并在退出时将其删除。http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
一种方法可能是提供一个引导应用程序,该应用程序确定架构并选择适当的可执行文件来运行。所以基本上你的应用程序的快捷方式或你有什么只是启动引导程序,然后启动适当的应用程序。如果您的应用程序是 Windows 服务,这可能会有点棘手。
最简单的方法是由安装程序处理这个问题 - 每个二进制文件都有两个版本,并根据目标机器上的系统位数复制必要的版本。