Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Старожил


Сообщения: 198
Благодарности: 36

Профиль | Отправить PM | Цитировать


Доброго времени суток!
Собственно не вижу особой проблемы в создании набора обновлений для установки на "живую" систему. Те кому этот набор так нужен могут без особого труда собрать его сами. Не ждя никого.

Сам собираю наборы для 7х32 / 7х64 / ХРх32. Вкратце выглядит это следующим образом (крайне упрощенно):

В корневой папке набора имеем папки KB, IE8 и IE9 c файлами обновлений в формате KBxxxxxxx.msu. И файлы KB.txt, IE8.txt, IE9.txt в которых эти обновления перечислены в виде:
Код: Выделить весь код
KBxxxxxxx
KBzzzzzzz
И основной скрипт .bat

Код: Выделить весь код
@echo off

SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

rem Командная строка для выполнения задержки перед установкой каждого обновления
set delay=start /wait /min .\nircmd.exe wait 2000

echo.
echo Данный пакет обновлений предназначен для Windows 7 x86 с 1 сервис-паком
echo.

echo Получаем список установленных обновлений...
wmic qfe get HotFixId >> !SystemDrive!\Installed.log

rem Для каждой не пустой строки файла KB.txt вызываем процедуру :KBInst
for /F "tokens=1,* delims= " %%k in (%~dp0KB.txt) do call :KBInst "%%k" KB

rem Проверяем версию IE и ставим соответсвующие ей обновки с помощью :KBInst
for /f "tokens=3" %%s in ('reg query "HKLM\SOFTWARE\Microsoft\Internet Explorer" /v Version') do set VerIE=%%s
if %VerIE:~,1%==8 (for /F "tokens=1,* delims= " %%k in (%~dp0IE8.txt) do call :KBInst "%%k" IE8)
if %VerIE:~,1%==9 (for /F "tokens=1,* delims= " %%k in (%~dp0IE9.txt) do call :KBInst "%%k" IE9)

del !SystemDrive!\Installed.log

echo Установка завершена
echo Система будет перезагружена

pause
rem Выполняем перезагрузку после 3 секундной задержки
start /B %~dp0nircmd.exe cmdwait 3000 exitwin reboot forceifhung

goto :EOF

rem Процедура для установки обновлений 
:KBInst
	rem Имя текущего обновления из файла присваиваем переменной number
	set number=%~1
	set pathinst=%2
	find /i "!number!" !SystemDrive!\Installed.log 1>nul 2>&1
	if !Errorlevel!==0 (
		echo !number! уже установлено
		goto :EOF
		)
	if exist %~dp0!pathinst!\!number!.msu (
		echo Устанавливаем !number!
		start /wait wusa.exe %~dp0!pathinst!\!number!.msu /quiet /norestart
		for %%i in (0 3010) do if !Errorlevel! EQU %%i set err=0
		if !err!==0 (
			echo Готово
			!delay!
			) else (
			echo Ошибка установки
			) 
		)
goto :EOF

:EOF
Соль/сахар/перец по вкусу

PS: Списки актуальных обновлений можно взять на ру-борде.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:55, 21-10-2012 | #74