Я написал nsis script для java-проекта. У меня есть пакетный файл в моем проекте. Я написал пакетный файл для обычных окон 32 бит и 64 бит. После установки я начал пакетный файл автоматически, используя Exec command.Its woks отлично работает в 32-битных окнах. Но в то же время это не очень хорошо работает в 64 бит. Так что я подозреваю, что перед установкой я должен проверить, является ли Windows 32-разрядной или 64-разрядной версией. Поделитесь своими взглядами, как проверить?
Как обнаружить Windows 32bit или 64 бит с помощью NSIS script?
Ответ 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
, так как считаю, что волосы быстрее. Лол. Надеюсь это поможет! =)