AppScript-B. Détecter l’architecture x86/x64

I. Présentation

Pour ce second volet relatif aux techniques de script, je vous propose de prendre en considération l’architecture de processeur au sein des processus d’installation. En fait, vous pourriez rétorquer qu’il est toujours possible de créer des packages indépendants pour des applications dont l’architecture est différente mais il me semble plus élégant, lorsque le cas se présente, de les regrouper au sein d’un même script qui fera la distinction. Pensez à stipuler l’architecture dans le nommage du fichier, comme « Install-Appli_v1.0_x86_amd64.vbs », pour un script qui prendrait les 2 cas en considération. A l’instar des commentaires dans un script, c’est simple mais bien pratique, surtout pour les personnes qui passeront après vous 😉

Sous l’onglet « Détails » d’une application MDT, il est possible de sélectionner les plateformes supportées.

MDT-OS.

Mais l’idée ici, est plutôt de gérer une installation à packages mixtes. (Autrement dit, dont les sources 32  et 64 bits sont différentes)
_32-64bit

II. Détecter l’architecture pour les packages mixtes x86/x64

Donc pour ce genre de test, le plus simple est de recourir à la variable d’environnement  « %PROCESSOR_ARCHITECTURE% »

 

(Batch)
En mode batch, cela donne quelque chose du genre :

if "%PROCESSOR_ARCHITECTURE%"=="x86" goto x86
:amd64
  echo Execution des programmes 64 bits
goto fin
:x86
  echo Execution des programmes 32 bits
:fin

(VBscript)
En vbscript, c’est sensiblement plus compliqué, ou pas 😉

Set WshShell = WScript.CreateObject("WScript.Shell")
sCPU = WshShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")
If LCase(sCPU) = "x86" Then
    WScript.Echo "L'architecure CPU est de type 32 bits." 
Else
    WScript.Echo "L'architecure CPU est de type 64 bits."
End If

(PShell)
Et en Powershell, on procédera de la même manière :

$CPU = $env:PROCESSOR_ARCHITECTURE
If ($CPU.ToLower() -eq "x86") {
 Write "L'architecure CPU est de type 32 bits." 
 } Else {
    Write "L'architecure CPU est de type 64 bits."
} 

Note : Sur les systèmes 64 bits, la présence de la variable d’environnement « %PROCESSOR_ARCHITEW6432% » vous permet d’identifier un contexte d’exécution secondaire (WindowsOnWindows). Autrement dit, cela permet de détecter qu’un interpréteur 32 bits (« ..\Windows\SysWOW64\…exe ») s’exécute sous un processus initial en 64 bits.

Il est également possible de passer par le biais d’une requête WMI

$CPU = (Get-WmiObject Win32_OperatingSystem -computername localhost).OSArchitecture
Write "L'architecure CPU est de type $CPU"

 

Retour au sujet principal

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *