web-dev-qa-db-fra.com

Comment détecter Windows 32 bits ou 64 bits en utilisant le script NSIS?

J'ai écrit le script nsis pour Java project.J'ai un fichier batch dans mon projet.J'ai écrit un fichier batch pour généralement Windows 32 bits et 64 bits.Après l'installation, j'ai démarré le fichier batch automatiquement en utilisant - Exec command.Ses woks fonctionnent bien dans les fenêtres 32 bits.Mais en même temps, cela ne fonctionne pas bien en 64 bits.Je soupçonne donc qu'avant l'installation, je dois vérifier si Windows est en version 32 bits ou 64 bits.Veuillez partager votre vues comment vérifier?

31
Ami

Utilisez la macro RunningX64 dans l'en-tête x64.nsh :

!include LogicLib.nsh
!include x64.nsh

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

Pour les futurs googleurs paresseux - Un petit extrait:

Inclure ceci:

!include x64.nsh

Et utilisez ceci si:

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

Voici ce que j'utilise la plupart du temps sans avoir besoin de 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

Maintenant, $ Bit contient 64 ou 32 qui peuvent être utilisés comme ceci:

${If} $Bit == 64
     ...64-bit code..
${Else}
     ..32-bit code...
${EndIf}

Ou

StrCmpS $Bit 64 SixtyFour ThirtyTwo

SixtyFour:
    ...
    Goto End
ThirtyTwo:
    ...
End:

J'ai utilisé StrCmpS car je pense que c'est un poil plus rapide. Lol. J'espère que cela t'aides! =)

0
daemon.devin