Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Обновления для Microsoft Windows XP, часть 8

Модерирует : KLASS, IFkO

articlebot (07-08-2016 19:22): Обновления для Micrоsoft Windows XP  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Обновления для Microsoft Windows XP, часть 8
articlebot (07-08-2016 19:22): Обновления для Micrоsoft Windows XP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru