web-dev-qa-db-ja.com

NSISスクリプトを使用して32ビットまたは64ビットのウィンドウを検出する方法

Javaプロジェクトのnsisスクリプトを作成しました。プロジェクトにバッチファイルがあります。32ビットと64ビットの一般的なWindows用のバッチファイルを作成しました。インストール後、次を使用してバッチファイルを自動的に開始しました- Execコマンドです.32ビットウィンドウでは問題ありませんが、64ビットではうまく機能しません。したがって、インストールする前に、ウィンドウが32ビットバージョンか64ビットバージョンかを確認する必要があります。確認方法は?

31
Ami

x64.nsh ヘッダーでRunningX64マクロを使用します。

!include LogicLib.nsh
!include x64.nsh

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

将来の怠惰なグーグルのために-小さなスニペット:

これを含める:

!include x64.nsh

そして、これを使用するのは:

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

ここでは、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を使用しました。笑。お役に立てれば! =)

0
daemon.devin