Подтвердить что ты не робот

Как обнаружить Windows 32bit или 64 бит с помощью NSIS script?

Я написал nsis script для java-проекта. У меня есть пакетный файл в моем проекте. Я написал пакетный файл для обычных окон 32 бит и 64 бит. После установки я начал пакетный файл автоматически, используя Exec command.Its woks отлично работает в 32-битных окнах. Но в то же время это не очень хорошо работает в 64 бит. Так что я подозреваю, что перед установкой я должен проверить, является ли Windows 32-разрядной или 64-разрядной версией. Поделитесь своими взглядами, как проверить?

4b9b3361

Ответ 1

Используйте макрос RunningX64 в заголовке x64.nsh:

!include LogicLib.nsh
!include x64.nsh

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

Ответ 2

Для будущих ленивых гуглеров - небольшой фрагмент:

Включите это:

!include x64.nsh

И используйте это, если:

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

Ответ 3

Вот то, что я использую большую часть времени без необходимости 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, так как считаю, что волосы быстрее. Лол. Надеюсь это поможет! =)