【问题标题】:Auto lauch 32bit/64bit according to OS bitness?根据操作系统位数自动启动 32 位/64 位?
【发布时间】:2018-11-14 10:16:08
【问题描述】:

我正在使用 Visual Studio 2008 编写应用程序。部署应用程序时,一些系统是 32 位的,而另一些是 64 位的。因此,我计划在安装程序中同时提供 32 位/64 位版本,然后根据操作系统的位数启动相应的版本。后者如何实现,即获取操作系统的位数并启动相应的版本?

让我澄清一下情况。我已经用 C++ 开发了 32 位和 64 位 EXE 应用程序。然后我想用C++(我不知道.NET)检测Windows的位数并启动相应版本的应用程序。

谢谢

【问题讨论】:

  • 可能会编写一个 32 位安装程序(因此它可以在任何地方运行),然后将其解压并尝试启动一个 64 位测试可执行文件。这将返回错误(不支持的可执行文件),或者可执行文件将成功运行并返回非错误退出状态。喜欢int main(){return 0;}
  • 或者等等,你是想在安装时选择一次,还是每次都安装并在运行时选择?
  • 从 32 位安装程序调用 IsWow64ProcessNtQueryInformationProcessProcessWow64Information 如果检测到 wow64 进程 - 启动 64 位安装程序并退出

标签: visual-studio windows-installer installation x86-64 32bit-64bit


【解决方案1】:

我建议寻找更强大的 MSI 打包工具。 Most professional tools 为您提供了一个内置的引导程序,一键即可提供此功能。

VS 设置项目对于基本的应用程序打包很有用,但从不打算为您提供全部功能。

【讨论】:

    【解决方案2】:

    这取决于“启动相应版本”的含义。这意味着您已经编写了需要选择的代码,在这种情况下,这根本不是安装程序的问题——您只需要找到操作系统的位数,然后安装适当的 MSI 文件(或 VS 生成的设置。 EXE文件)。如果它是 C# 启动器,您可能会使用 Environment.Is64BitOperatingSystem。

    您的问题并未说明您是否正在交付将由客户端程序使用的代码(程序集、COM Dll 等)。我提到这一点是因为您的 32 位设置将在 32 位子系统中的 64 位操作系统版本上安装和运行。 64 位版本大概只包含本机 64 位代码。

    请注意,您的 64 位设置无论如何都不会安装在 32 位操作系统上。

    【讨论】:

      猜你喜欢
      • 2013-08-29
      • 1970-01-01
      • 2013-10-31
      • 2011-04-18
      • 2011-12-18
      • 2011-07-06
      • 2011-02-20
      • 2012-09-01
      • 2011-07-07
      相关资源
      最近更新 更多