Как определить Windows 32-битные или 64-битные с помощью сценария NSIS?

String json="" // place your json format here in double Quotes with proper escapes .......
jObject = new JSONObject(json.trim());
Iterator<?> keys = jObject.keys();

while( keys.hasNext() ) {
    String key = (String)keys.next();
    if ( jObject.get(key) instanceof JSONObject ) {
         // do what ever you want with the JSONObject.....
    }
}
29
задан Ami 5 November 2012 в 09:56
поделиться

3 ответа

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

!include LogicLib.nsh
!include x64.nsh

Section
${If} ${RunningX64}
    DetailPrint "64-bit Windows"
${Else}
    DetailPrint "32-bit Windows"
${EndIf}  
SectionEnd
30
ответ дан Anders 5 November 2012 в 09:56
поделиться

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

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

!include x64.nsh

И использовать это, если:

${If} ${RunningX64}
    # 64 bit code
${Else}
    # 32 bit code
${EndIf}       
59
ответ дан Nitay 5 November 2012 в 09:56
поделиться

Вот что я использую большую часть времени без необходимости x64.nsh

Var Bit
System::Call "kernel32::GetCurrentProcess()i.s"
System::Call "kernel32::IsWow64Process(is,*i.r0)"
StrCmpS [110] 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, так как считаю, что это на волос быстрее. Лол. Надеюсь это поможет! =)

-1
ответ дан demon.devin 5 November 2012 в 09:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: