簡體   English   中英

如何使用NSIS腳本檢測32位或64位的窗口?

[英]How to detect windows 32bit or 64 bit using NSIS script?

我已經為java項目編寫了nsis腳本。我的項目中有批處理文件。我已經為常用的Windows 32位和64位編寫了批處理文件。安裝完成后,我已經使用Exec命令自動啟動了批處理文件。它在32位windows中運行得很好。但是同時這在64位中運行不佳。所以我懷疑在安裝之前我應該​​檢查一下Windows是32位還是64位版本。請分享您的看法如何檢查?

對於未來懶惰的googlers - 一個小片段:

包括這個:

!include x64.nsh

並使用此如果:

${If} ${RunningX64}
    # 64 bit code
${Else}
    # 32 bit code
${EndIf}       

x64.nsh標頭中使用RunningX64宏:

!include LogicLib.nsh
!include x64.nsh

Section
${If} ${RunningX64}
    DetailPrint "64-bit Windows"
${Else}
    DetailPrint "32-bit Windows"
${EndIf}  
SectionEnd

這是我大部分時間都使用的,而不需要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因為我相信這是一個更快的頭發。 大聲笑。 希望這可以幫助! =)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM