Есть маленькая тонкость с определением разрядности ОС: значение переменной окружения "PROCESSOR_ARCHITECTURE" зависит от разрядности командного процессора (cmd.exe). В принципе, "по умолчанию" в x64-системе cmd-скрипты запускаются именно в 64-битном cmd.exe (C:\Windows\System32\cmd.exe). Но мало ли что... К примеру, если запускать скрипт из-под 32-битного файл-менеджера (FAR, Total Commander и т.п.), то будет запущена именно 32-битный командный процессор (C:\Windows\SysWOW64\cmd.exe). Соответственно, разрядность ОС будет определена неверно...
Точно опеределить разрядность системы можно с использованием wmic:
Код:
(wmic path Win32_processor get AddressWidth| 1>nul 2>&1 find /i "64") && set "TARGETDIR=с:\Program Files (x86)\1cv8\8.3.12.1714\ExtDst" || set "TARGETDIR=с:\Program Files\1cv8\8.3.12.1714\ExtDst"
Окончательно скрипт будет выглядеть так:
Код:
@echo OFF
(wmic path Win32_processor get AddressWidth| 1>nul 2>&1 find /i "64") && (
set "TARGETDIR=с:\Program Files (x86)\1cv8\8.3.12.1714\ExtDst"
) || (
set "TARGETDIR=с:\Program Files\1cv8\8.3.12.1714\ExtDst"
)
pushd "%TARGETDIR%" && goto :INSTALLED
"\\сервер\distrib\1c\v8.3\8.3.13.1644\1CEnterprise 8.msi" /qr TRANSFORMS=adminstallrelogon.mst;1049.mst DESIGNERALLCLIENTS=1 THICKCLIENT=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0
goto :EOF
:INSTALLED
echo Папка "%TARGETDIR%" уже существует. Выход без установки программы.
pause
goto :EOF