Задача: необходимо, автоматизировать запуск программы с соблюдением разрядности операционной системы. Иными словами, чтобы на компьютере под управлением 64-битной операционной системы запускался exe (x64), а на 32-битной соответственно — exe (x86).
Данная автоматизация оправдана, если речь идёт об автоматическом запуске общего ПО или во время тихой установки.
Для эксперимента я взял установочные msi-пакеты архиватора 7-zip, разместил их на общем сетевом ресурсе и соорудил команды для установщика Windows:
msiexec /i "//ip/distrib/7z-x86.msi" /qn msiexec /i "//ip/distrib/7z-x64.msi" /qn
С параметрами программы msiexec можно ознакомиться здесь.
Осталось заключить команды в условия bat-скрипта для установки с соблюдением разрядности операционной системы:
set "osX=%PROCESSOR_ARCHITECTURE%" if defined PROCESSOR_ARCHITEW6432 set "osX=AMD64" if "%osX%"=="x86" ( start /wait msiexec /i "//ip/distrib/7z-x86.msi" /qn ) else ( start /wait msiexec /i "//ip/distrib/7z-x64.msi" /qn ) exit /b
Работа скрипта может обеспечиваться на уровне групповых политик при запуске компьютера в домене. Главное в работе данного батника — убедиться, чтобы исполняемые файлы были доступны.
Кстати, в PowerShell условие на проверку разрядности целевой операционной системы выглядит вот так:
if ((Get-WmiObject win32_operatingsystem | select osarchitecture).osarchitecture -like "64*") { #x64 }
else { #x86 }