Автоматическая установка софта BAT файлами

11:57

Пожалуй каждый админ сталкивался с проблемами, связанными с различающимися версиями ПО на компах пользователей. У одного стоит WinXP SP1, у другого SP3, второй пользуется Firefox 2 с неработающими обновлениями, третьему в спешке забыли установить антивирус, или неправильно его настроили, у четвертого Word 2007 сохраняет файлы в формате docx, который не понимает openoffice пятого, ну и многое другое. Я тоже значительно пострадал от всего этого и однажды решил привести список ПО и его настройки у пользователей к одному единому знаменателю. Было много проблем и бессонных ночей, но после всего этого, количество проблем и звонков резко сократилось, да и установка новых систем свелась в основном только к вводу пустого компьютера в домен, после чего весь основной софт сам настраивается и устанавливается. А начну я свой рассказ с установки софта из доменного скрипта автозапуска (BAT файла).

 

Собственно сама установка программ производится у меня из этого скрипта. Т.е. при каждом логине пользователя, проверяется список программ и устанавливаются нужные, если их нет. Да, это наводит некоторые проблемы – одни программы требуют перезагрузки, другие долго устанавливаются и т.п. Но надо только один раз отмучиться и потом все будет хорошо icon smile Автоматическая установка софта BAT файлами
Первая проблема, с которой я столкнулся – необходимость запуска установки от имени администратора. Стандартный системный runas требует ввода пароля администратора при каждом запуске и для наших целей непригоден. В ходе поисков в интернете, была найдена программа http://www.robotronic.de/runasspc.html. С ее помощью мы генерируем зашифрованный файл, который запускается модулем этой программы, который в свою очередь, запускает нужный нам bat файл от имени доменного админа. Команда на запуск будет представлять из себя примерно такую строку:

1
\\server\share\autorun\runasspc.exe /cryptfile:"\\server\share\autorun\runasspc.spc" /quiet

Где runasspc.spc – сгенерированный нами файл для запуска файла сценариев \\server\share\autorun\soft_install.bat от имени доменного администратора. Для этой цели я даже сделал отдельного пользователя с паролем по-сложнее и бесконечным сроком действия.

Далее мне потребовался какой-либо оповещатель об установке софта. Для этого я использовал программу Blat, которая позволяет отправлять письма прямо из командной строки. Я выложил ее в доступную всем папку на сервере \\server\share\autorun\blat

Далее собственно файл \\server\share\autorun\soft_install.bat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@ECHO OFF
REM Адрес почтового сервера и адреса получателя и отправителя писем
SET MAILS="10.1.1.1"
SET MAILFROM="support@company.ru"
SET MAILTO="support@company.ru"
SET BLAT="\\server\share\autorun\blat\blat.exe"

REM Имена компьютеров, на которые не требуется устанавливать софт
if %COMPUTERNAME%==NOTEBOOK (
exit
)
if %COMPUTERNAME%==WINSERVER (
exit
)

rem ---------------------Service Pack 3 Install-------------------------
REM проверяем установлен ли SP3 в реестре
Reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion|Find "Service Pack 3"

if %ERRORLEVEL% == 0 (
ECHO Service Pack 3 Already Installed
goto end
)

ECHO Installing Service Pack 3
"%BLAT%" -server %MAILS% -f %MAILFROM% -to %MAILTO% -s "Soft install on %COMPUTERNAME%. WinXP SP3 install real" -body "%DATE% %TIME% WinXP SP3 Install"
REM Путь к дистрибутиву и команда тихой установки + ключи, не требующие подтверждения установки и отменяющие перезагрузку
"\\server\share\distrib\WindowsXP-KB936929-SP3-x86-RUS.exe" /quiet /passive /norestart

:end

rem ---------------------------------NOD32---------------------------------------------

SET PROGRAMMNAME="NOD32"
REM Путь и имя к проверяемого файла
SET FILENAME="C:\Program Files\ESET\ESET NOD32 Antivirus\ekrn.exe"
REM Требуемый размер файла
SET FILESIZENEED="810120"

REM Сравниваем размер файла и если не совпадает с требуемым, или файл не существует - запускаем установку
echo Checking %PROGRAMMNAME%
if exist "%FILENAME%" (
        for %%a in (%FILENAME%) do set "FILESIZE=%%~za"
        if "%FILESIZE%" == %FILESIZENEED% (
                echo Program already install %FILENAME% with size %FILESIZE% bytes
                goto end
        ) else (
                echo Need install. File %FILENAME% need to be %FILESIZENEED% bytes, but it %FILESIZE% bytes.
        )
) else (
echo Need install. File %FILENAME% not exist.
)

echo Installing programm

REM Отправка письма с оповещением об установке
"%BLAT%" -server %MAILS% -f %MAILFROM% -to %MAILTO% -s "Soft install on %COMPUTERNAME%. NOD32 4" -body "%DATE% %TIME% Begin installing NOD32."
REM Специально созданный reg-файл с нужными настройками NOD32
regedit /s \\server\share\nod32.reg
REM Путь к дистрибутиву и команда для тихой установки (Silent Install)
"\\server\share\distrib\eavbe_nt32_rus_4.msi" /qb! REBOOT="ReallySuppress"

:end

Логика примерно такова:
-проверяем, не установлена ли уже программа (по существованию файла, размеру, ключам реестра и т.п.)
-если нет – запускаем тихую установку (Silent Install)
Практически все известные программы делаются сейчас с режимом тихой установки. Это позволяет устанавливать ее, не выдавая каких-либо окон и не требуя от пользователя действий.
С этой помощью, все компьютеры пользователей у меня теперь работают с набором программ с одинаковыми версиями. Однако приходится бороться с автоматическими обновлениями самих программ – выключать их через реестр, или другими способами. Вот список софта, который устанавливается у меня таким способом:

Service Pack 3
NOD32
Acrobat Reader
7Zip
Internet Explorer
Mozilla Firefox
OpenOffice
FreeImage Editor
Denol Scanner
Punto Switcher
OCS Inventory Agent
Small CD Writer
NTPD
UltraVNC
Miranda IM
Adobe Flash Player
doPDF
и несколько других мелких утилит.

Теперь я точно знаю, что ЛЮБОЙ пользователь может, к примеру, найти на рабочем столе ярлык для программы для записи дисков, что сайт с флеш-содержимым у него откроется корректно и в списке принтеров он найдет виртуальный PDF-принтер

 

(c)