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

J'ai écrit un script nsis pour le projet java.J'ai un fichier Batch dans mon projet.J'ai écrit un fichier batch pour Windows 32 bits et 64 bits.Après l'installation, j'ai démarré le fichier batch automatiquement en utilisant la commandeExec .Son woks bien dans les fenêtres 32 bits.mais en même temps cela ne fonctionne pas bien dans 64 bit.so je soupçonne qu'avant d'installer, je devrais vérifier si windows est une version 32 bits ou 64 bits.veuillez partager vos points de vue Comment vérifier?

28
demandé sur Ami 2012-11-05 13:28:50

3 réponses

Utilisez la macro RunningX64 dans x64.NSH en-tête:

!include LogicLib.nsh
!include x64.nsh

Section
${If} ${RunningX64}
    DetailPrint "64-bit Windows"
${Else}
    DetailPrint "32-bit Windows"
${EndIf}  
SectionEnd
29
répondu Anders 2017-10-10 15:36:19

Pour les futurs googlers paresseux - un petit extrait:

Incluez ceci:

!include x64.nsh

Et utilisez ceci si:

${If} ${RunningX64}
    # 64 bit code
${Else}
    # 32 bit code
${EndIf}       
59
répondu Nitay 2014-03-03 13:23:45

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é {[3] } car je crois que c'est un cheveu plus rapide. Lol. Espérons que cette aide! =)

-1
répondu demon.devin 2017-06-05 21:59:37