35

我已经为 java 项目编写了 nsis 脚本。我的项目中有批处理文件。我已经为常见的 windows 32 位和 64 位编写了批处理文件。安装后我已经使用Exec命令自动启动批处理文件。它在 32 位 windows 中很好用。但是同时这在 64 位中效果不佳。所以我怀疑在安装之前我应该​​检查 Windows 是 32 位还是 64 位版本。请分享您的看法如何检查?

4

3 回答 3

64

对于未来懒惰的谷歌用户 - 一小段:

包括这个:

!include x64.nsh

并在以下情况下使用它:

${If} ${RunningX64}
    # 64 bit code
${Else}
    # 32 bit code
${EndIf}       
于 2014-03-03T13:23:45.890 回答
37

在x64.nsh头文件中使用 RunningX64 宏:

!include LogicLib.nsh
!include x64.nsh

Section
${If} ${RunningX64}
    DetailPrint "64-bit Windows"
${Else}
    DetailPrint "32-bit Windows"
${EndIf}  
SectionEnd
于 2012-11-05T09:59:19.647 回答
1

这是我大部分时间使用的,不需要 x64.nsh

Var Bit
System::Call "kernel32::GetCurrentProcess()i.s"
System::Call "kernel32::IsWow64Process(is,*i.r0)"
StrCmpS $0 0 +3
StrCpy $Bit 64
Goto +2
StrCpy $Bit 32

现在 $Bit 持有 64 或 32 可以这样使用:

${If} $Bit == 64
     ...64-bit code..
${Else}
     ..32-bit code...
${EndIf}

或者

StrCmpS $Bit 64 SixtyFour ThirtyTwo

SixtyFour:
    ...
    Goto End
ThirtyTwo:
    ...
End:

我用过StrCmpS,因为我相信它的头发更快。哈哈。希望这可以帮助!=)

于 2017-06-05T21:59:37.523 回答