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