TechnicsKuzya
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Скрипт подходит, как для русскоязычной системы, так и для англоязычной (корректно определяет версию и язык операционной системы заданные в OS_ver.txt, даже при наличии MUI, при несоответствии выводится соответствующее сообщение, язык вывода информационных сообщений (англ. или рус.) зависит от выбранной кодовой страницы в системе). Скрипт также рассчитан на установку .Net Framework 3.5 SP1 с последними обновлениями, удаление ярлыков IE с рабочего стола и панели быстрого запуска, установку библиотек VC++, если данные функции не нужны, их можно пропустить удалив или не создавая папки dotnetfx35, IE и VC++ (скрипт проверяет их наличие, в случае отсутствия пропускает их установку и переходит к следующей выполняемой строке) Архив с готовым скриптом, файлами конфигурации, необходимыми утилитами и файлами реестра тут... Ссылка на cборники официальных обновлений для Windows XP (32-bit/64-bit) (19.04.2011/26.12.2010) с возможностью выбора скачиваемых обновлений, их языка, а также инструментами для удобной синхронизации файлов с текущей версией сборника, теперь нет необходимости перекачивать одно и тоже каждый месяц: Torrent-link (регистрация не требуется) Пример текста основного скрипта (сохранить можно, например, как Setup.cmd)... Код: @echo off rem --- Script from http://technicskuzya.narod.ru --- SetLocal EnableExtensions SetLocal EnableDelayedExpansion rem ---Считываем файлы конфигурации Set.txt, OS_ver.txt, Text_ru.txt(Text_en.txt) из папки Config--- for /F "tokens=*" %%s in (.\Config\Set.txt) do set %%s for /F "tokens=*" %%s in (.\Config\OS_ver.txt) do set %%s (if "%Chk_Lang%"=="Russian" set Chk_Lang3=%Chk_Lang1%)&(if "%Chk_Lang%"=="English" set Chk_Lang3=%Chk_Lang2%) for /f "tokens=3" %%c in ('reg query "%detect_CP%" /v OEMCP^|findstr /I /C:"OEMCP"') do if "%%c"=="866" (set text_lang=Text_ru.txt) else (set text_lang=Text_en.txt) for /F "tokens=*" %%s in (.\Config\%text_lang%) do set %%s rem ---Определяем нужно ли выводить информационные сообщения и сигналы--- if /I %ShowMsg%==Yes (set RemShowMsg= ) else (set RemShowMsg=rem) rem ---Задаем заголовок окна CMD--- Title %Title_Cmd% rem ---Скрываем окно CMD по заголовку--- start /WAIT /MIN .\Tools\nircmd.exe win hide title "%Title_Cmd%" %delay% rem ---Вызываем процедуру проверки соответствия версии и языка операционной системы--- call :chk rem ---Выводим информационное сообщение о начале установки обновлений поверх всех окон со звуковым оповещением--- %RemShowMsg% start .\Tools\nircmd.exe infobox %Text_InfoBox_2% %Title_InfoBox% %RemShowMsg% start /WAIT /MIN .\Tools\nircmd.exe beep 1500 2000 %RemShowMsg% start /WAIT /MIN .\Tools\nircmd.exe win settopmost title %Title_InfoBox% 1 rem ---Делаем запись даты и времени выполнения скрипта в журналы Installed_Updates.log и Detected_Updates.log--- echo Date of installation: %time:~,-6% %date%>>%SystemDrive%\Installed_Updates.log&echo Date of detection: %time:~,-6% %date%>>%SystemDrive%\Detected_Updates.log echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log rem ---Включаем отображение расширений файлов в проводнике (только если существует файл HideFileExt.reg в папке Tools)--- if exist .\Tools\HideFileExt.reg start /high /wait regedit /s .\Tools\HideFileExt.reg rem ---Отключаем службу восстановления системы (только если существует файл DisableSR.reg в папке Tools)--- if exist .\Tools\DisableSR.reg ( start /high /wait regedit /s .\Tools\DisableSR.reg start /high /wait sc stop srservice >nul ) rem ---Вызываем процедуру установки Microsoft .Net Framework 3.5 SP1 Rus--- if /I %Install_NET_35%==Yes (call :dotnetfx35) rem ---Вызываем процедуру установки Microsoft .Net Framework 4.0 Rus--- if /I %Install_NET_40%==Yes (call :dotnetfx40) rem ---Для каждой не пустой строки файла KB.txt из папки Config вызываем процедуру :KBInst--- for /F "tokens=1,* delims= " %%k in (.\Config\KB.txt) do call :KBInst "%%k" "%%l" rem ---Если установлено обновление KB890830 создаем ярлык (меню Пуск->Программы) для исполняемого файла в папке заданной в файле Text_ru.txt (Text_en.txt)--- if exist "%WINDIR%\System32\MRT.exe" .\Tools\nircmd shortcut "%WINDIR%\System32\MRT.exe" "~$folder.common_programs$\%MRT_Group%" "Microsoft Removal Tool" rem ---Вызываем процедуру удаления ярлыков Internet Explorer с рабочего стола и панели быстрого запуска--- call :IEclrlnk rem ---Вызываем процедуру установки Windows Roots Update--- call :rootsupdate rem ---Вызываем процедуру установки библиотек VC++ 2005 и VC++ 2008--- call :VC++ if exist .\KBxxxxxx\KB905474.exe if exist .\WGA\WGAUpdate.exe start /wait .\WGA\WGAUpdate.exe rem ---Записываем по две пустые строки в журналы Installed_Updates.log и Detected_Updates.log--- echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Installed_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log&echo.>>%SystemDrive%\Detected_Updates.log rem ---Распаковываем утилиту nircmd.exe в папку %SystemRoot%\TEMP--- start /WAIT /MIN .\Tools\NirCmdInst.exe rem ---После перезагрузки выводим информационное сообщение о полном окончании установки--- %RemShowMsg% reg add HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v ReadyPreSP3 /t REG_SZ /d "%SystemRoot%\TEMP\nircmd.exe infobox \"%Text_InfoBox_4%\" \%Title_InfoBox:~,-1%\"" /f >nul rem ---При наличии файла NGEN.exe выполняем очередь заданий службы оптимизации .Net Framework 4.0 if exist %WinDir%\Microsoft.NET\Framework\v4.0.30319\NGEN.exe (start /B /WAIT %WinDir%\Microsoft.NET\Framework\v4.0.30319\NGEN.exe executequeueditems /silent /nologo) rem ---Проверяем значение ключа принудительной перезагрузки после окончания установки обновлений--- if /I %ForceReboot%==Yes ( rem ---Выводим информационное сообщение об окончании установки обновлений и предстоящей перезагрузке со звуковым оповещением--- %RemShowMsg% start /WAIT /MIN %SystemRoot%\TEMP\nircmd.exe win close title %Title_InfoBox% %RemShowMsg% start %SystemRoot%\TEMP\nircmd.exe infobox %Text_InfoBox_3% %Title_InfoBox% %RemShowMsg% start /WAIT /MIN %SystemRoot%\TEMP\nircmd.exe beep 200 800 rem ---Выполняем перезагрузку после 10 секундной задержки--- start /B %SystemRoot%\TEMP\nircmd.exe cmdwait 10000 exitwin reboot forceifhung ) else (rem ---Выводим информационное сообщение об окончании установки обновлений и необходимости в перезагрузке --- %RemShowMsg% start /WAIT /MIN %SystemRoot%\TEMP\nircmd.exe win close title %Title_InfoBox% %RemShowMsg% start %SystemRoot%\TEMP\nircmd.exe infobox %Text_InfoBox_5% %Title_InfoBox% %RemShowMsg% start %SystemRoot%\TEMP\nircmd.exe beep 200 800 ) exit rem =============== rem ===ПРОЦЕДУРЫ=== rem =============== rem ---Процедура проверки соответствия версии и языка операционной системы--- :chk rem ---Проверяем версию операционной системы--- for /f "tokens=2*" %%v in ('reg query "%detect_SP%" /v ProductName^|findstr /I /C:"ProductName"') do ( if not "%%w"=="%Chk_OS%" ( %RemShowMsg% start .\Tools\nircmd.exe infobox %Text_InfoBox_0% %Title_InfoBox% exit ) ) rem ---Проверяем версию Service Pack операционной системы--- for /f "tokens=5" %%p in ('reg query "%detect_SP%" /v CSDVersion') do ( if not "%%p"=="%Chk_SP:~-1%" ( %RemShowMsg% start .\Tools\nircmd.exe infobox %Text_InfoBox_0% %Title_InfoBox% exit ) ) rem ---Проверяем язык операционной системы--- if not exist "%ALLUSERSPROFILE%\%Chk_Lang3%" ( %RemShowMsg% start .\Tools\nircmd.exe infobox %Text_InfoBox_1% %Title_InfoBox% exit ) goto :EOF rem ---Процедура установки Microsoft .Net Framework 3.5 SP1 Rus с проверкой существования папки .\dotnetfx35 и сведений о данной версии в реестре--- :dotnetfx35 if exist .\dotnetfx35 ( reg query "%detect_NET_35%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( %delay% xcopy .\dotnetfx35\dotnetfx35langpack_x86ru.exe %TEMP%\dotnetfx3530729.01\1033\dotnetfx35\x86\*.exe /Y >nul start /wait .\dotnetfx35\dotnetfx35.exe %NetSwitches35% echo dotnetfx35 %NetSwitches35%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%) for /f "tokens=3" %%k in ('reg query "%detect_KB954550%" /v Location') do set NetPath=%%~dk%%~pk rem rd /S /Q "!NetPath:~,-1!" attrib +h !NetPath:~,-1! %delay% ) ELSE (echo .NET Framework 3.5 SP1 Rus detected in %detect_NET_35%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_NET_35%" 1>nul 2>&1 if !ERRORLEVEL!==0 ( reg query "%detect_KB958481%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp20sp2-kb958481-x86.exe %NetUpdatesSwitches% echo KB958481 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%) ) ELSE (echo KB958481 detected in %detect_KB958481%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_KB958483%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp30sp2-kb958483-x86.exe %NetUpdatesSwitches% echo KB958483 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%) ) ELSE (echo KB958483 detected in %detect_KB958483%>>%SystemDrive%\Detected_Updates.log) reg query "%detect_KB958484%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\dotnetfx35\ndp35sp1-kb958484-x86.exe %NetUpdatesSwitches% echo KB958484 %NetUpdatesSwitches%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%) ) ELSE (echo KB958484 detected in %detect_KB958484%>>%SystemDrive%\Detected_Updates.log) ) ) goto :EOF rem ---Процедура установки Microsoft .Net Framework 4.0 Rus Full с проверкой существования папки .\dotnetfx40 и сведений о данной версии в реестре--- :dotnetfx40 if exist .\dotnetfx40 ( reg query "%detect_NET_40%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( %delay% start /wait .\dotnetfx40\dotnetfx40_full_x86.exe %NetSwitches40% echo dotnetfx40_full_x86 %NetSwitches40%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%)&(%NetStop40%) ) ELSE (echo .NET Framework 4.0 Full detected in %detect_NET_40%>>%SystemDrive%\Detected_Updates.log) ) if exist .\dotnetfx40 ( reg query "%detect_NET_40_lp%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( %delay% start /wait .\dotnetfx40\dotnetfx40lp_full_x86ru.exe %NetSwitches40% echo dotnetfx40lp_full_x86ru %NetSwitches40%>>%SystemDrive%\Installed_Updates.log (%delay%)&(%NetStop20%)&(%NetStop40%) ) ELSE (echo .NET Framework 4.0 Full Rus detected in %detect_NET_40_lp%>>%SystemDrive%\Detected_Updates.log) ) goto :EOF rem ---Процедура для установки обновлений из папки KBxxxxxx перечисленных в KB.txt--- :KBInst rem ---Имя текущего обновления из файла KB.txt (значение первого параметра переданного данной процедуре) присваиваем переменной number--- set number=%~1 rem ---По умолчанию считаем, что ключи для установки текущего обновления в файле KB.txt не определены--- set UserSwitches=No rem ---Если в файле KB.txt после имени обновления заданы ключи для установки обновления, присваиваем их переменной UserSwitches--- if not %2=="" set UserSwitches=%~2 rem ---По-умолчанию считаем, что ни одно обновление из папки KBxxxxxx не установлено--- set detect_key=0 rem ---Для "особенных" обновлений выполняем "особенную" проверку на предмет необходимости установки и прерываем выполнение процедуры в случае обнаружения сведений--- if %number%==KB923789 if not exist "%detect_KB923789%" (echo %number% new version of Macromedia Flash already installed>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) if %number%==KB946648 if not exist "%detect_KB946648%" (echo %number% skipped %detect_KB946648% not exist>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) if %number:~,3%==IE7 set detect_IE=%detect_IE7% if %number:~,3%==IE8 set detect_IE=%detect_IE8% if %number:~,3%==wua if exist "%detect_WUA%" (echo %number% detected in %detect_WUA%>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) for /F "tokens=1,* delims= " %%b in (.\Config\KBforNetFW35.txt) do ( if %number%==%%b ( reg query "%detect_NET_35%" 1>nul 2>&1 if !ERRORLEVEL!==1 (echo %number% skipped MS .Net Framework 3.5 SP1 not detected>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) if %number%==KB976569 ( reg query "%detect_KB983583%" 1>nul 2>&1 if !ERRORLEVEL!==0 (echo %number% has already replaced KB983583>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) ) if %number%==KB982168 ( for /F "tokens=1,* delims= " %%e in (.\Config\KB982168.txt) do ( set number=%%e for /F "tokens=*" %%l in (.\Config\RegKeys.txt) do ( reg query "%%l" 1>nul 2>&1 if !ERRORLEVEL!==0 (set /a chkKB982168=chkKB982168+1)&(echo !number! from KB982168 detected in %%l>>%SystemDrive%\Detected_Updates.log) ) ) set number=KB982168 if !chkKB982168!==2 set detect_key=1 ) if %number%==KB982524 ( for /F "tokens=1,* delims= " %%e in (.\Config\KB982524.txt) do ( set number=%%e for /F "tokens=*" %%l in (.\Config\RegKeys.txt) do ( reg query "%%l" 1>nul 2>&1 if !ERRORLEVEL!==0 (set /a chkKB982524=chkKB982524+1)&(echo !number! from KB982524 detected in %%l>>%SystemDrive%\Detected_Updates.log) ) ) set number=KB982524 if !chkKB982524!==2 set detect_key=1 ) ) ) for /F "tokens=1,* delims= " %%c in (.\Config\KBforNetFW40.txt) do ( if %number%==%%c ( reg query "%detect_NET_40%" 1>nul 2>&1 if !ERRORLEVEL!==1 (echo %number% skipped MS .Net Framework 4.0 not detected>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) ) if %number%==msxml4 ( reg query "%detect_msxml4%" 1>nul 2>&1 if !ERRORLEVEL!==0 (echo %number% detected in %detect_msxml4%>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) ) if %number%==KB968930 ( reg query "%detect_NET_35%" 1>nul 2>&1 if !ERRORLEVEL!==1 (echo %number% skipped MS .Net Framework 3.5 SP1 not detected>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) if %number%==KB890830 if exist %windir%\system32\mrt.exe for /f "tokens=1" %%d in ('dir %windir%\system32\mrt.exe /T:W^|findstr /I /C:"mrt"') do ( if "%%d"=="%cur_date_mrt%" (echo %number% detected in %windir%\system32\mrt.exe - modified %%d>>%SystemDrive%\Detected_Updates.log)&(goto :EOF) ) if %number%==KB905474 if not exist ".\KBxxxxxx\KB905474.exe" goto :EOF rem ---Выполняем запрос сведений об обновлении во всех ветках реестра указанных в файле RegKeys.txt из папки Config и прерываем поиск при успешном запросе--- for /F "tokens=*" %%l in (.\Config\RegKeys.txt) do ( reg query "%%l" 1>nul 2>&1 if !ERRORLEVEL!==0 (set detect_key=1)&(echo !number! detected in %%l>>%SystemDrive%\Detected_Updates.log)&(goto chk_detect) ) :chk_detect rem ---Выполняем установку обновления если сведения в реестре не обнаружены--- if !detect_key!==0 ( rem ---Выполняем анализ наличия или отсутствия переопределения (в KB.txt) ключей установщика заданных по-умолчанию (в Set.txt)--- if !UserSwitches!==No ( if exist .\KBxxxxxx\%number%.exe (start /wait .\KBxxxxxx\%number%.exe %MainSwitches%) else ( if exist .\KBxxxxxx\%number%.msi (start /wait .\KBxxxxxx\%number%.msi !MainSwitches!) else ( echo %number% skipped file not found in KBxxxxxx>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) echo %number% %MainSwitches%>>%SystemDrive%\Installed_Updates.log ) ELSE ( if exist .\KBxxxxxx\%number%.exe (start /wait .\KBxxxxxx\%number%.exe !UserSwitches!) else ( if exist .\KBxxxxxx\%number%.msi (start /wait .\KBxxxxxx\msiexec /i %number%.msi !UserSwitches!) else ( if exist .\KBxxxxxx\%number%.cmd (start /wait /min .\KBxxxxxx\%number%.cmd !UserSwitches!)&(goto :EOF) else ( echo %number% skipped file not found in KBxxxxxx>>%SystemDrive%\Installed_Updates.log)&(goto :EOF) ) ) echo %number% !UserSwitches!>>%SystemDrive%\Installed_Updates.log ) rem ---Выполняем задержку перед установкой следующего обновления--- %delay% goto :EOF ) goto :EOF rem ---Процедура удаления ярлыков Internet Explorer с рабочего стола и панели быстрого запуска с проверкой существования папки .\IE и сведений в реестре--- :IEclrlnk if exist .\IE if exist "%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch\*Internet Explorer*.lnk" ( reg query "%detect_IE%" 1>nul 2>&1 if !ERRORLEVEL!==0 ( start /wait regedit /s .\IE\DDL_IE.reg start /wait /min .\Tools\nircmd.exe shellrefresh start /wait .\IE\IElnk.exe ) ) goto :EOF rem ---Процедура установки Windows Roots Update с проверкой соответствия текущей версии указанной в Set.txt--- :rootsupdate for /f "tokens=3 delims= " %%v in ('reg query "%detect_rootsupd%" /v Version') do set detect_ver_rootsupd=%%v if not "%detect_ver_rootsupd%"=="%cur_ver_rootsupd%" (.\Other\rootsupd.exe %OldSwitches%&echo Windows Roots Update %OldSwitches% - ver:"%cur_ver_rootsupd%">>%SystemDrive%\Installed_Updates.log ) ELSE echo Windows Roots Update detected in %detect_rootsupd%>>%SystemDrive%\Detected_Updates.log goto :EOF rem ---Процедура установки библиотек VC++ с проверкой существования папки .\VC++ и веток реестра указанных в Set.txt :VC++ if exist .\VC++ ( reg query "%detect_VC05%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\VC++\vcredist_x86_2005.exe %OldSwitches% echo VC++ 2005 %OldSwitches%>>%SystemDrive%\Installed_Updates.log %delay% ) ELSE echo VC++ 2005 detected in %detect_VC05%>>%SystemDrive%\Detected_Updates.log reg query "%detect_VC08%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\VC++\vcredist_x86_2008.exe %OldSwitches% echo VC++ 2008 %OldSwitches%>>%SystemDrive%\Installed_Updates.log %delay% ) ELSE echo VC++ 2008 detected in %detect_VC08%>>%SystemDrive%\Detected_Updates.log reg query "%detect_VC10%" 1>nul 2>&1 if !ERRORLEVEL!==1 ( start /wait .\VC++\vcredist_x86_2010.exe %OldSwitches% echo VC++ 2010 %OldSwitches%>>%SystemDrive%\Installed_Updates.log %delay% ) ELSE echo VC++ 2010 detected in %detect_VC10%>>%SystemDrive%\Detected_Updates.log ) goto :EOF | В корне системного диска создаются файлы Installed_Updates.log и Detected_Updates.log в которых содержится, соответственно, список установленных и обнаруженных обновлений после выполнения скрипта. Описание и содержимое файлов из папки KBxxxxx Активация и деактивация возможности установки обновлений для Internet Explorer сразу после его установки производится с помощью скрипта IEPostUpdateInstall.cmd с ключами соответственно /On и /Off. Пример содержания файла IEPostUpdateInstall.cmd... Код: echo off if /I "%1"=="/On" goto PostUpdateOn if /I "%1"=="/Off" goto PostUpdateOff exit :PostUpdateOn REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f REG ADD "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0\WU" /v ForcePostUpdateInstall /t REG_DWORD /d 1 /f exit :PostUpdateOff REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\7.0\WU" /f REG DELETE "HKLM\SOFTWARE\Microsoft\Internet Explorer\Setup\8.0\WU" /f exit | Описание и содержимое файлов из папки Config Список, порядок обновлений, замена ключей установки обновлений заданных по-умолчанию (/quiet /norestart в файле Set,txt) задается в файле KB.txt (поддерживаемые разрешения EXE, CMD, MSI), который должен быть расположен в папке Config, а собственно обновления в папке KBxxxxxx. Пример содержания файла KB.txt (указывается только имя обновления, для большинства в виде KBxxxxxx и ключи установки - для EXE, MSI при необходимости, для CMD - обязательно)... Код: WUAServices /Stop ;Список обновлений для .Net Framework KB961118 DotNetServiceStop /On KB963707 DotNetServiceStop /On KB982168 DotNetServiceStop /On KB979909 DotNetServiceStop /On KB982524 DotNetServiceStop /On KB2418241 DotNetServiceStop /On KB2416473 DotNetServiceStop /On KB2446704-v2 DotNetServiceStop /On KB2416472 DotNetServiceStop /On KB2446708 DotNetServiceStop /On ;Основной список обновлений KB892130 KB898461 KB923789 /Q KB950762 KB951376-v2 KB951978 KB946648 KB952954 KB950974 KB952287 KB958644 KB954459 KB956802 KB967715 KB923561 KB956572 KB952004 KB960803 KB959426 KB961501 KB973540 KB973869 KB956744 KB973507 KB960859 KB973815 KB971657 KB956844 KB954155 KB975025 KB974571 KB974112 KB969059 KB968389 KB975467 KB973687 KB952069 KB974318 KB974392 KB955759 KB973904 KB972270 KB975713 KB975560 KB977914 KB978706 KB977816 KB979309 KB978338 KB978601 KB978542 KB978695 KB979482 KB975562 KB2229593 KB2115168 KB982665 KB981997 KB980436 KB981322 KB2121546 KB2347290 KB975558 KB979687 KB2296011 KB2378111 KB2387149 KB982132 KB2360937 KB2079403 KB2423089 KB2443105 KB2443685 KB2440591 KB2419632 KB2478971 KB2483185 KB2478960 KB2393802 KB2476687 KB2479943 KB2481109 KB2524375 KB2485663 KB2508429 KB2506212 KB2506223 KB2511455 KB2503658 KB2508272 KB2497640 KB2507618 KB2510581 KB2412687 KB2509553 KB970430 KB971737 KB2345886 KB971029 ;Internet Explorer 8.0 + обновления IE8-x86 /quiet /norestart /update-no IEPostUpdateInstall /On KB2497640-IE8 KB2510531-IE8 KB2447568-IE8 IEPostUpdateInstall /Off ;Пакет базовых поставщиков службы криптографии для смарт-карт KB909520 ;Библиотека API Windows Automation KB971513 ;Пакет Windows PowerShell 2.0 and WinRM 2.0 KB968930 ;Клиент Remote Desktop Connection 7.0 KB969084 KB2483614 ;Средство удаления вредоносных программ KB890830 /R ;Поддержка форматов файловой системы exFAT KB955704 ;Обновления для IIS KB953155 KB970483 KB975254 KB976323 KB2290570 KB2124261 msxml4 WUAServices /Stop wua30-x86 /quiet /norestart /wuforce WUAServices /Start KB905474 | Пример содержания файла Set.txt... Код: ;...=Ключ вкл./выкл. принудительной перезагрузки после установки, возможные значения Yes, No ForceReboot=Yes ;...=Ключ вкл./выкл. установки .Net Framework 3.5 SP1 Rus, возможные значения Yes, No Install_NET_35=Yes ;...=Ключ вкл./выкл. установки .Net Framework 4.0 Rus Full, возможные значения Yes, No Install_NET_40=Yes ;...=Ключ вкл./выкл. информационных сообщений и сигналов процесса установки, возможные значения Yes, No ShowMsg=Yes ;...=Набор ключей для новых обновлений (возможно переопределение для каждого обновления в файле KB.txt) MainSwitches=/quiet /norestart ;...=Командная строка для выполнения задержки перед установкой каждого обновления delay=start /wait /min .\Tools\nircmd.exe wait 3000 ;...=Набор ключей для обновлений .Net Framework из папки dotnetfx35 NetUpdatesSwitches=/quiet /norestart ;...=Набор ключей для установки rootsupd.exe, vcredist_x86_2005.exe, vcredist_x86_2008.exe OldSwitches=/Q ;...=Набор ключей для установки Microsoft .NET Framework 3.5 SP1 / 4.0 NetSwitches35=/quiet /norestart /nopatch /lang:RUS NetSwitches40=/q /norestart ;...=Ветка реестра для определения текущей кодовой страницы (определяет использование text_ru.txt или text_en.txt) detect_CP=HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage ;...=Ветка реестра для определения версии операционной системы detect_SP=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion ;...=Ветки реестра для определения установлен Internet Explorer (заданной в KB.txt версии) в системе или нет detect_IE=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie detect_IE7=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie7 detect_IE8=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\ie8 ;...=Ветка реестра для определения установлен Microsoft .NET Framework 3.5 SP1 в текущей системе или нет detect_NET_35=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1 ;...=Ветка реестра для определения установлено обновление KB954550 в системе или нет detect_KB954550=HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB954550-v5\Filelist\0 ;...=Ветка реестра для определения установлено обновление KB958481 в системе или нет detect_KB958481=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB958481 ;...=Ветка реестра для определения установлено обновление KB958483 в системе или нет detect_KB958483=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.0 Service Pack 2\SP2\KB958483 ;...=Ветка реестра для определения установлено обновление KB958484 в системе или нет detect_KB958484=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1\SP1\KB958484 ;...=Ветка реестра для определения установлено обновление KB976569 в системе или нет detect_KB983583=HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\KB983583 ;...=Ветка реестра для определения установлен Microsoft .NET Framework 4.0 (full, client, rus lp) в текущей системе или нет detect_NET_40=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full detect_NET_40_lp=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\1049 detect_NET_40_client=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client detect_NET_40_client_lp=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client\1049 ;...=Путь для определения необходимости установки обновления KB923789 detect_KB923789=!WINDIR!\system32\Macromed\Flash\flash.ocx ;...=Путь для определения необходимости установки обновления KB946648 detect_KB946648=!ProgramFiles!\Messenger\msgsc.dll ;...=Путь для определения необходимости установки обновления Windows Update Agent detect_WUA=!WINDIR!\system32\SoftwareDistribution\Setup\ServiceStartup\wups.dll\7.4.7600.226 ;...=Ветка реестра для определения установлено обновление в системе или нет исходя из наличия сведений в реестре для его удаления path_UNINSTALL=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall ;...=Ветка реестра для определения установлены библиотеки VC++ 2005 SP1 в системе или нет detect_VC05=!path_UNINSTALL!\{837b34e3-7c30-493c-8f6a-2b0f04e2912c} ;...=Ветка реестра для определения установлены библиотеки VC++ 2008 SP1 в системе или нет detect_VC08=!path_UNINSTALL!\{1F1C2DFC-2D24-3E06-BCB8-725134ADF989} ;...=Ветка реестра для определения установлены библиотеки VC++ 2010 в системе или нет detect_VC10=!path_UNINSTALL!\{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5} ;...=Ветка реестра для определения установлены библиотеки MSXML 4 в системе или нет detect_MSXML4=!path_UNINSTALL!\{859DFA95-E4A6-48CD-B88E-A3E483E89B44} ;...=Ветка реестра для определения установленной версии обновления Windows Roots Certificates detect_rootsupd=HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{EF289A85-8E57-408d-BE47-73B55609861A} ;...=Определение переменной, которой в случае обнаружения ветки %detect_rootsupd% будет присвоено значение версии обновления Windows Roots Certificates detect_ver_rootsupd=0 ;...=Номер актуальной версии обновления Windows Roots Certificates cur_ver_rootsupd=27,0,2195,0 ;...=Дата последнего изменения файла MRT.exe (Microsoft Removal Tool) (используемый метод определения установленой версии KB890830) cur_date_mrt=07.04.2011 ;...=Командная строка для остановки службы оптимизации .Net Framework на период установки сборника NetStop20=start /high /wait /min sc stop clr_optimization_v2.0.50727_32 >nul NetStop40=start /high /wait /min sc stop clr_optimization_v4.0.30319_32 >nul | Список веток реестра для проверки наличия обновления в системе задается в файле RegKeys.txt, который должен быть расположен в папке Config. Переменная !number! в ветке реестра должна заменять номер обновления KBxxxxxx. Пример содержания файла RegKeys.txt... Код: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number! HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-v2 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-v3 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-IE7 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number:~,8!-v2-IE7 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!-IE8 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!_WM9 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\!number!_WM8 HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.5 SP1\SP1\!number! HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\!number! HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\!number!v2 HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 2.0 Service Pack 2\SP2\!number:~,9!v2 HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.0 Service Pack 2\SP2\!number! HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 3.0 Service Pack 2\SP2\!number!v2 HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 4 Client Profile\!number! HKLM\SOFTWARE\Microsoft\Updates\Microsoft .NET Framework 4 Extended\!number! HKLM\SOFTWARE\Microsoft\Updates\WGA\SP0\!number! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number:~,3! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number!-IE7 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number:~,8!-v2-IE7 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP0\!number!-IE8 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP20\!number! HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP3\!number! HKLM\SOFTWARE\Microsoft\Updates\MSXML4SP2\Q!number:~+2! HKLM\SOFTWARE\Microsoft\Updates\Windows Media Player\SP0\!number!_WM9 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\!number!-v2 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\!number!-v3 HKLM\SOFTWARE\Microsoft\Updates\Windows XP\SP4\!number! HKLM\SOFTWARE\Microsoft\Updates\!number! | Текст для информационных сообщений скрипта задается в файлах Text_ru.txt и Text_en.txt. Пример содержания файла Text_ru.txt (для корректного отображения русскоязычных сообщений кодировка файла при сохранении должна быть OEM)... Код: Title_Cmd=Post-!Chk_SP! Title_InfoBox=" !Title_Cmd! updates for '!Chk_OS:~10! !Chk_SP! !Chk_Lang!'" Text_InfoBox_0="Извините, этот сборник только для '!Chk_OS! !Chk_SP!'..." Text_InfoBox_1="Язык операционной системы и обновлений не совпадает..." Text_InfoBox_2="Обновление началось, закройте все приложения и дождитесь сообщения о завершении установки..." Text_InfoBox_3="Для завершения установки Ваш компьютер будет перезагружен примерно через 10 секунд..." Text_InfoBox_4=Установка завершена... Text_InfoBox_5="Для завершения установки перезагрузите Ваш компьютер при первой же возможности..." MRT_Group=Антивирусные | Пример содержания файла Text_en.txt для англоязычного сборника... Код: Title_Cmd=Post-!Chk_SP! Title_InfoBox=" !Title_Cmd! updates for '!Chk_OS:~10! !Chk_SP! !Chk_Lang!'" Text_InfoBox_0="Sorry, this pack only for '!Chk_OS! !Chk_SP!'..." Text_InfoBox_1="Language does not match..." Text_InfoBox_2="Started..." Text_InfoBox_3="Preparing for restart (~10 sec)..." Text_InfoBox_4=The end... Text_InfoBox_5="When you can, please, restart your system..." MRT_Group=Antiviruses | Информация о системе предназначенной для обновления задается в файле OS_ver.txt. Пример содержания файла OS_ver.txt (для корректной обработки русскоязычных строк кодировка файла при сохранении должна быть OEM)... Код: ;...=Версия операционной системы для которой предназначены обновления(например: Microsoft Windows XP, Microsoft Windows Server 2003) Chk_OS=Microsoft Windows XP ;...=Версия Service Pack операционной системы для которой предназначены обновления (например: SP2, SP3) Chk_SP=SP3 ;...=Язык операционной системы для которой предназначены обновления (English или Russian) Chk_Lang=Russian ;...=Название любой русскоязычной папки расположенной в русскоязычной системе в %ALLUSERSPROFILE%\ (например: Главное меню, Рабочий стол) Chk_Lang1=Главное меню ;...=Название любой англоязычной папки расположенной в англоязычной системе в %ALLUSERSPROFILE%\ (например: Start Menu, Desktop) Chk_Lang2=Start Menu ;...=Задание начального значения переменной используемой для проверки наличия англо- или русскоязычной папки в %ALLUSERSPROFILE%\ Chk_Lang3=None | Описание и содержимое файлов реестра из папки Tools Файлы DisableSR.reg и HideFileExt.reg - не являются обязательными. Первый файл необходим для корректного отключения службы восстановления, второй для включения отображения расширений файлов в проводнике. Если Вы считаете, что они Вам не нужны, просто не создавайте эти файлы. Пример содержания файла DisableSR.reg... Код: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore] "DisableSR"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr] "Start"=dword:00000004 "ImagePath"=hex(2):5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ 74,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,52,\ 00,49,00,56,00,45,00,52,00,53,00,5c,00,73,00,72,00,2e,00,73,00,79,00,73,00,\ 00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr\Parameters] "FirstRun"=dword:00000001 | Пример содержания файла HideFileExt.reg... Код: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "HideFileExt"=dword:00000000 | Описание и содержимое файлов из папки IE Файлы DDL_IE.reg и IELnk.exe - не являются обязательным. Первый файл необходим для отключения отображения ярлыка Internet Explorer на рабочем столе, второй для удаления ярлыка с панели быстрого запуска, а также очистки временных папок после перезагрузки. Если Вы считаете, что они Вам не нужны, просто не создавайте эти файлы. Пример содержания файла DDL_IE.reg... Код: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons] [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu] "{871C5380-42A0-1069-A2EA-08002B30309D}"=dword:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel] "{871C5380-42A0-1069-A2EA-08002B30309D}"=dword:00000001 | Пример общей структуры папок (список файлов в папках зависит от кол-ва обновлений) Архив с готовым скриптом, файлами конфигурации, необходимыми утилитами и файлами реестра тут...
| Всего записей: 495 | Зарегистр. 02-02-2008 | Отправлено: 11:23 16-04-2011 | Исправлено: TechnicsKuzya, 15:45 19-04-2011 |
|