【问题标题】:Choose between 32 and 64 bit for an NSIS installer?为 NSIS 安装程序选择 32 位和 64 位?
【发布时间】:2015-05-04 21:44:16
【问题描述】:

我发现了一些类似的问题,但我不确定他们是否回答了我的问题。我需要在我的安装程序中包含 Java,但是,我们不知道客户端是使用 32 位还是 64 位,并且我们不想做出假设。我们考虑只使用 32 位 JRE,因为它也可以在 64 位系统上工作,而且它也不需要打包多个 JRE。我们也不会知道客户端是否具有互联网连接以使其连接并为客户端选择。在 NSIS 中是否有一种简单的方法可以在这两者之间做出决定?我应该只使用 32 位 JRE 而不必担心吗?

【问题讨论】:

  • AFAIK,没有。一旦运行 32x 可执行文件,就很难确定您是否在 x64 系统上运行。通常,我们会生成 x32 和 x64 包并让用户决定
  • 这完全取决于您的应用程序。如果您想要/必须支持小堆并且它确实有效。对于桌面应用程序,这可能是必需的,在(Windows)服务器上,无论如何都没有仅支持 32 位的最新版本。您还可以提供它来选择现有的 VM。
  • @MadProgrammer:你哪来的这么难的想法,Windows有官方的API函数来判断这个……
  • @Anders 你有它的链接吗,每次我去寻找的建议都是在某些条件下任何东西都是黑客或不可靠的
  • @MadProgrammer: IsWow64Process()

标签: java 32bit-64bit nsis


【解决方案1】:

NSIS 有一个头文件,其中包含一些用于 64 位内容的帮助宏:

!include x64.nsh
!include LogicLib.nsh

Section
!if "${NSIS_PTR_SIZE}" >= 8
  DetailPrint "64-bit installer"
!else
  ${If} ${RunningX64}
    DetailPrint "32-bit installer on a 64-bit OS"
  ${Else}
    DetailPrint "32-bit installer on a 32-bit OS"
  ${EndIf}
!endif
SectionEnd

【讨论】:

  • 那么,如果是 32x 的可执行文件,它可以检测到这个吗?
  • 我只是想知道它是否适用于 x32 和 x64 位可执行文件,方式相同;)
  • @MadProgrammer:不,它的工作方式不同。我们知道 64 位程序无法在 32 位版本的 Windows 上运行,因此我们可以在 64 位程序的编译时硬编码结果...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
相关资源
最近更新 更多