Скрипты для установки обновлений windows 7

! OUT OF DATE

GenUpdates

🇷🇺 Внимание! Скачивать ТОЛЬКО по этой ссылке https://github.com/dialmak/GenUpdates/archive/master.zip

Описание

Скрипт «GenUpdates.cmd» предназначен для генерирования скриптов установки обновлений Windows с возможностью проконтролировать коды ошибок при установке обновлений.
Расположите «GenUpdates.cmd» вместе с «Settings.ini» перед папками с скачанными обновлениями.
В «Settings.ini» укажите параметр update_folder — относительный путь к папке с обновлениями, остальные параметры опциональны.
Затем запустите скрипт «GenUpdates.cmd» и следуйте подсказкам. Сгенерированный скрипт для установки обновлений Windows будет записан в ту же папку, что и скрипт «GenUpdates.cmd».

Внимание! Если у вас после открытия списка обновлений — «крякозябры», тогда инсталлируйте notepad++.


Быстрый старт

Пример создания скриптов установки обновлений Windows для списка Рекомендации по обновлению ОС Windows 7 SP1 + KB3125574 от TAILORD

  • Сделать папочку «Updates 7» и в ней папки
    * «Updates 01» (для Списка 1 пункты 1-39)
    * «Updates 02» (для Списка 1 пункт 40)
    * «Updates 03» (для Списка 1 пункт 41)
    * ну и т.д. и т.п.
    * «Addons» (для списка Дополнительно)

  • Скачать файлы из списков в соответствующие папки.

  • Положить в папку «Updates 7» скрипт «GenUpdates.cmd» с файлом настроек «Settings.ini».

  • Указать в «Settings.ini» папку «Updates 01» и запустив «GenUpdates.cmd» — сгенерировать скрипт установки обновлений следуя подсказкам.

  • Затем проделать тоже самое для остальных папок.

  • Пользоваться 😃


Полный список кодов ошибок Центра обновления

https://msdn.microsoft.com/en-us/library/windows/desktop/hh968413(v=vs.85).aspx
https://support.microsoft.com/en-us/kb/938205
https://social.technet.microsoft.com/wiki/contents/articles/15260.windows-update-agent-error-codes.aspx


Содержимое файла «Settings.ini»

# Этот файл "Settings.ini" используется для настроек параметров скрипта 'GenUpdates.cmd'.    
# Файл "Settings.ini" должен быть в кодировке Unicode (UCS-2 LE BOM).   

[Settings]    
# Переменная update_folder указывает на относительный путь к папке с обновлениями и расширениями. Для текущей папки оставить пустой.   
# Пример: update_folder=Updates 01\x64   
update_folder=  
   
# Переменная sort_list указывает порядок сортировки списка обновлений. Может принимать значение time, -time, abc или -abc   
# time сортировка по дате\времени от ранних к поздним, -time сортировка по дате\времени от поздних к ранним, abc сортировка по алфавиту, -abc cортировка по обратному алфавиту.     
# Опциональный параметр, по умолчанию используется: sort_list=time   
sort_list=   
    
# Выбор поля времени для сортировки. Может использоваться время создания файла sort_time=1, время последнего использования sort_time=2 или время последнего изменения sort_time=3.    
# Опциональный параметр, по умолчанию используется время последнего изменения: sort_time=3   
sort_time=   
   
# Переменная text_editor указывает текстовый редактор для использования. Пример: text_editor=C:\Program Files\My Text Editor\TextEditor++.exe   
# Опциональный параметр, по умолчанию будет использоваться notepad++, если notepad++ не установлен - по умолчанию будет использоваться системный notepad.   
text_editor=   
   
# Имя будущего сгенерированного CMD файла для установки обновлений.     
# Опциональный парамет, по умолчанию имя генерируется из update_folder и текущей даты.   
cmd_name=   
   
# Переменная filter_ext указывает фильтр расширений файлов для обновлений. Пример: filter_ext=.msu .cab .exe .msi .psf .esd    
# Опциональный парамет, по умолчанию используется: filter_ext=.msu .exe .cab .msi    
filter_ext=   

Установка большого количества обновлений Windows Update обычно относится к тем рутинным операциям, которые каждый системный администратор хотел бы как можно сильнее автоматизировать. Действительно, данная задача занимает довольно много времени и требует время от времени отвлекаться, чтобы перейти от одного этапа к другому. Отчасти выручить в этой ситуации может создание собственного дистрибутива, уже включающего все необходимые обновления, но воспользоваться им удается не всегда. Иногда надо просто быстро обновить до актуального состояния какую-либо систему, тогда на помощь нам придет PowerShell.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Кроме того, в режиме аудита Windows 8 использовать Центр обновления Windows нельзя и установить обновления привычным образом не получится.

В этих, а также во многих других, случаях имеет смысл воспользоваться специальным модулем PowerShell для работы с Windows Update. Скачать его можно со страницы разработчика на Technet: Windows Update PowerShell Module. Мы настоятельно рекомендуем скачивать данный модуль именно оттуда.

Данный модуль работает в системах, начиная с Windows Vista и Server 2008 и требует PowerShell 2.0, хотя оптимально будет использование PowerShell 3.0 и выше.

Архив с модулем содержит папку PSWindowsUpdate, которую следует разместить в одном из двух возможных расположений:

  • %USERPROFILE%\Documents\WindowsPowerShell\Modules
  • %WINDIR%\System32\WindowsPowerShell\v1.0\Modules

Если вы хотите использовать данный модуль на постоянной основе, то имеет смысл разместить его в системной папке, в остальных случаях лучше использовать для этого директорию в профиле пользователя. Учтите, в папке Мои документы отсутствуют вложенные директории WindowsPowerShell и Modules, поэтому их следует создать самостоятельно.

PS-Windows-Update-001.jpg

Что дальше? В принципе уже сейчас можно воспользоваться одним из пакетных скриптов для данного модуля, доступных в сети. Но лучше сначала поработать с ним самостоятельно, после чего создать свой собственный пакетный файл.

Откроем консоль PowerShell от имени Администратора. Прежде всего выясним установленную политику командой:

Get-ExecutionPolicy

По умолчанию обычно установлена политика Restricted, которая запрещает выполнение скриптов даже администратору. Поэтому изменим ее на RemoteSigned, позволяющую запускать локальные скрипты, также, в целях безопасности, рекомендуем изменять политику только для текущего сеанса. Выполним команду:

Set-ExecutionPolicy RemoteSigned -Scope Process

Ключ -Scope позволяет задавать область применения политики, в данном случае это текущий процесс. Теперь можно выполнить импорт модуля командой:

Import-Module PSWindowsUpdate

В Windows 7 и иных системах, использующих PowerShell 2.0 вы можете столкнуться со следующей ошибкой: Имя «Unblock-File» не распознано как имя командлета. Она возникает из-за использования в одном из скриптов функции появившейся в PowerShell 3.0.

PS-Windows-Update-002.jpg

Однако ее несложно исправить. В папке с модулем откройте файл PSWindowsUpdate.psm1 и удалите в первой строке последовательность:

| Unblock-File

PS-Windows-Update-003.jpg

Сохраните исправленный файл и повторите импорт модуля. Теперь можно приступить к работе с ним.

Прежде всего получим список доступных обновлений:

Get-WUInstall -ListOnly

А вот и первый сюрприз, в списке обновлений присутствуют языковые модули, Skype и обновление для перехода на Windows 10. Все это приехало бы на ваш компьютер, воспользуйся вы одним из популярных скриптов для этого модуля, доступных в сети.

PS-Windows-Update-004.jpg

К счастью модуль обладает широкими возможностями. Мы можем исключить пакеты из списка по их категории, ключ -NotCategory, названию, ключ -NotTitle, или номеру обновления, ключ -NotKBArticleID. Используем каждый из них, в нашем случае уберем категорию языковых пакетов, Skype и обновление до Windows 10:

Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -ListOnly

Вот, уже гораздо лучше.

PS-Windows-Update-005.jpg

Теперь можно установить обновления командой:

Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

Ключи -AcceptAll и -IgnoreReboot включают одобрение всех пакетов и подавляют требование перезагрузки после установки некоторых обновлений.

PS-Windows-Update-006.jpg

Убедившись, что все работает как надо, можно создать собственный пакетный файл, откроем блокнот и в одну строку запишем:

PowerShell -ExecutionPolicy RemoteSigned -Command Import-Module PSWindowsUpdate; Get-WUInstall -NotCategory "Language packs" -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

Данная команда запускает PowerShell, устанавливает политику RemoteSigned, импортирует модуль, затем передает ему вышеуказанную команду. В общем делает все тоже самое, что мы только-что выполнили вручную. Сохраните данный файл как PSWindowsUpdate.cmd и теперь все что вам потребуется, это разместить модуль в нужном расположении и запустить данный пакетный файл с правами администратора.

Удобно? Да. Правда учтите, что некоторые обновления требуют обязательной установки предыдущих, поэтому, если вы давно не обновлялись, данный скрипт придется запускать несколько раз. Но это все равно проще, чем проделывать все эти операции вручную, кликнул на скрипт и занимайся своими делами, время от времени поглядывая на экран.

В Windows 8 языковые пакеты через WindowsUpdate не распространяются, поэтому команду можно немного упростить.

Get-WUInstall -NotTitle Skype  -NotKBArticleID KB3012973 -AcceptAll -IgnoreReboot

Однако на этом возможности данного модуля не заканчиваются, он позволяет быстро установить нужные обновления зная только их номер. Это значительно облегчает задачу, так как не надо посещать сайт Microsoft, искать необходимую статью и скачивать пакет именно для вашей версии системы.

Для установки отдельного пакета используйте команду (номер пакета использован исключительно для примера):

Get-WUInstall -KBArticleID KB3087916  -AcceptAll

Если надо установить несколько пакетов, то разделите их номера запятыми и добавьте ключ -IgnoreReboot, например:

Get-WUInstall -KBArticleID KB3066441, KB3078676  -AcceptAll -IgnoreReboot

PS-Windows-Update-007.jpg

Мы не ставили своей целью дать в данной статье полный обзор этого модуля, сфокусировавшись на решении конкретной задачи. Поэтому, если вас заинтересовали иные возможности данного модуля, то обратитесь к встроенной справке. Для этого откройте в блокноте файл интересующей функции, например, Get-WUInstall.ps1, каждый из которых автор снабдил подробным описанием.

PS-Windows-Update-008.jpg

Надеемся, что данный материал поможет вам автоматизировать некоторые рутинные задачи и добавит в ваш арсенал новый, удобный инструмент.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Приветствую читателей блога!

 

На сколько сложно установить Windows 7? Легко, скажете вы — и будете не совсем правы.
С
момента выхода сервис-пака 1 прошло уже довольно много времени, и
«Семёрка» обросла значительным количеством обновлений и дополнительными
компонентами, общее количество которых, на текущий момент, превышает 200
штук!
Если обновлять стандартным способом (Windows
Update — Центр обновления), процесс может занять продолжительное время
— до 5-ти часов и более, при этом будут устанавливаться ненужные пакеты
(те, которые заменены на новые) в порядке хронологии их выпуска. А
если всё это надо проделать для нескольких компьютеров — задача
становится трудновыполнимой.

Для автоматизации
обновлений на просторах Интернета существуют неофициальные «Пост
сервис-паки», авторы которых собирают актуальные обновления в пакет с
программой-установщиком — скачивай и устанавливай.
Такой способ считаю неподходящим по причинам:

  • Хочется получать обновления из официальных источников.
  • Помимо установки, эти паки производят дополнительные операции в системе.
  • Размер их довольно большой, и качать такой файл достаточно долго (в моём частном случае — ADSL)

Для решения задачи был написан набор скриптов, которым и хочу поделиться с вами.

Набор скриптов AutoUpdate7v2

Набор предназначен для автономной (оффлайн) установки обновлений Windows 7 (x86/x64).

Что входит в набор:

  • Список актуальных обновлений. Источник: профильная тема на форуме ru-board
  • Скрипт для загрузки обновлений и генерации пакетных файлов установки
  • Скрипт для получения списка уже установленных обновлений
  • Список нежелательных обновлений. Источник: здесь
  • Справка и ярлычки для запуска

Преимущества набора:

  • Обновления загружаются напрямую с серверов Microsoft
  • Никаких дополнительных действий в системе, только установка обновлений
  • Не используется стороннее ПО, только средства самой Windows
  • Малый размер набора
  • Возможность самостоятельно отредактировать список загрузки

Подробно что и как читайте в справке набора.

Видео работы набора: смотреть

Скачать набор (27КБ)       не могу скачать

Планирую ежемесячно выкладывать обновленный набор, по мере выхода обновлений.

Скачать набор (июль 2016)

Набор скриптов AutoUpdate7v2.1

Новая версия набора. Добавлен скрипт поиска нежелательных обновлений среди установленных в системе. Подробности в инструкции.

Скачать набор (версия 2.1, июль 2016)     не могу скачать
Скачать набор (версия 2.1, список от 28.07.16)

Автоустановка обновлений Windows 7. Часть 2 — новая версия набора

Обновления для операционной системы Windows выпускаются в виде файлов с расширением MSU или CAB. Если на компьютере не работает (отключена) служба Windows Update (Центр обновления Windows), вы можете скачать и установить накопительные обновления или обновления безопасности Windows вручную. В этой статье мы покажем, как скачать и установить в Windows обновления в формате MSU и CAB файлов.

Содержание:

  • Как вручную скачать MSU файлы обновлений для Windows?
  • Установка обновлений из MSU файлов в Windows
  • Как извлечь CAB файл из MSU обновления?
  • Установка CAB файла обновлений в Windows 10/11
  • Установка CAB и MSU обновления с помощью скриптов

Как вручную скачать MSU файлы обновлений для Windows?

Microsoft выпускает обновления и патчи в формате CAB файла. Именно в таком виде ваш компьютер получает обновления с серверов обновлений Microsoft или локального сервера WSUS. Для более удобного ручного распространения отдельных обновлений клиентами через каталог обновлений Microsoft, такие CAB файлы упаковываются в специальный формат MSU (Microsoft Update Standalone Package).

Вы можете скачать MSU файлы обновлений Windows (а в некоторых случаях и CAB) и других продуктов MSFT можно в каталоге обновлений Microsoft (https://www.catalog.update.microsoft.com/). Перейдите в Microsoft Update Catalog, найдите и скачайте нужное обновление. К примеру, я хочу установить обновление стека 2022-05 Servicing Stack Update for Windows 10 Version 21H2 for x64-based Systems (KB5014032). Нажмите на кнопку Download.

скачать msu обновление из Microsoft Update Catalog

Переместите скачанный файл ssu-19041.1704-x64_70e350118b85fdae082ab7fde8165a947341ba1a.msu в каталог C:\temp. Переименуйте файл на более короткое имя — windows10-21h2-kb5014032.msu.

Установка обновлений из MSU файлов в Windows

Для запуска установки пакета обновления в Windows достаточно дважды щёлкнуть по скачанному MSU файлу. Если обновление применимо к данному компьютеру, откроется диалоговое окно Автономного установщика обновлений Windows (Windows Update Standalone Installer), в котором нужно подтвердить установку апдейта.

При установке MSU обновления может появится ошибка “Обновление неприменимо к этому компьютеру”. Причины этой ошибки подробно разобраны в статье по ссылке.

Также вы можете установить msu пакет обновления из командной строки с помощью утилиты wusa.exe.

Для установки обновления в «тихом» режиме (пользователю не будут показываться никакие всплывающие окна) с отложенной перезагрузкой, откройте командную строку с правами администратора и выполните команду:

wusa.exe c:\Temp\windows10-21h2-kb5014032.msu /quiet /norestart

Через некоторое время проверьте, что обновление успешно установлено:

wmic qfe list | findstr 5014032

wmic qf list: проверить что обновление windows установлено

Или найдя в журнале событий Установка (Event Viewer -> Windows Logs -> Setup) запись с Event ID 2 от источника WUSA с текстом:

Windows update "Security Update for Windows (KB5014032)" was successfully installed. (Command line: "wusa.exe  c:\Temp\windows10-21h2-kb5014032.msu /quiet /norestart ")
Обновление Windows "Security Update for Windows (KB5014032)" было успешно установлено. (Командная строка: C:\Windows\system32\wusa.exe  c:\Temp\windows10-21h2-kb5014032.msu /quiet /norestart)

лог установки обновлений windows в event viewer

Обратите внимание, что установка обновлений в msu формате в Windows через wusa.exe выполняется медленнее, чем при установке того же обновления в виде cab файла. Причина в выполнении дополнительного сканирования на серверах Windows Update/WSUS. См статью о медленной установке msu обновлений.

Как извлечь CAB файл из MSU обновления?

Если служба Windows Update (wuausrv) работает некорректно, вы не сможете установить обновление из MSU файла. В этом случае можно вручную распаковать пакет MSU, извлечь из него CAB файл обновления и вручную установить его в Windows.

Чтобы распаковать MSU пакет в каталог C:\Temp\kb4056887 (каталог нужно предварительно создать), выполните следующую команду:

expand -f:* “C:\Temp\windows10.0-kb4056887-x64.msu” C:\Temp\kb4056887

команда expand для распаковки msu пакета и получения cab файла

Microsoft (R) File Expansion Utility Version 10.0.10011.16384
Copyright (c) Microsoft Corporation. All rights reserved.
Adding C:\Temp\kb4056887\WSUSSCAN.cab to Extraction Queue
Adding C:\Temp\kb4056887\Windows10.0-KB4056887-x64.cab to Extraction Queue
Adding C:\Temp\kb4056887\Windows10.0-KB4056887-x64-pkgProperties.txt to Extraction Queue
 Adding C:\Temp\kb4056887\Windows10.0-KB4056887-x64.xml to Extraction Queue
Expanding Files ....
Expanding Files Complete ...
4 files total.

Как вы видите в каталоге появилось 4 типа файлов:

  • .xml файл (Windows10.0-KB4056887-x64.xml) — содержит метаданные пакета msu и используется программой Wusa.exe
  • .cab файл (Windows10.0-KB4056887-x64.cab — один или несколько) – непосредственно архив с обновлением Windows
  • *pkgProperties.txt файл (Windows10.0-KB4056887-x64-pkgProperties.txt)– содержит свойства пакета (дата выпуска, архитектура, тип пакета, ссылка на KB и т.д.)

Также вы можете открыть любой MSU файла с помощью утилиты 7-ZIP и извлечь из него CAB файл.

извлечь cab файл из msu обновления windows с помощью 7zip

Установка CAB файла обновлений в Windows 10/11

Вы можете установить CAB файл обновления в Windows двумя способами.

Наиболее универсальный способ установки обновления из CAB файл – утилита DISM.exe. Команда установки может быть такой:

DISM.exe /Online /Add-Package /PackagePath:c:\Temp\kb4056887\Windows10.0-KB4056887-x64.cab

Deployment Image Servicing and Management tool
Version: 10.0.10240.16384
Image Version: 10.0.10240.16384
Processing 1 of 1 - Adding package Package_for_KB4056887~31bf3856ad364e35~amd64~~10.0.1.0
[==========================100.0%==========================]
The operation completed successfully.

установка cab обновления с помощью DISM.exe

Примечание. Обратите внимание, как быстро происходит установка пакета через DISM по сравнению со скоростью установки обновления из MSU файла.

Если нужно установить CAB пакет в тихом режиме и подавить запрос на перезагрузку компьютера после установки обновления, команда DISM будет такой:

start /wait DISM.exe /Online /Add-Package /PackagePath: c:\Temp\kb4056887\Windows10.0-KB4056887-x64.cab /Quiet /NoRestart

Команда DISM.exe /Add-Package позволяет установить и MSU обновление (поддерживается только установка в офлайн образ Windows). Также вы можете в параметре
/PackagePath
указать путь к каталогу, в котором хранятся MSU и CAB файлы обновлений. DISM рекурсивно просканирует указанные каталог и вложенные папки и установит в образ Windows все найденные CAB и MSU пакеты.

Здесь нужно отметить, что команда DISM.exe /Add-Package не проверяет зависимости и требования к окружению при добавлении CAB файла в образ Windows (в отличии от wusa.exe которая предварительно проверяет, применимо ли MSU обновление к компьютеру.

Для установки CAB файлов в образ Windows вместо команды DISM /Add-Package можно использовать PowerShell командлет
Add-WindowsPackage -Online -PackagePath "C:\win10_kb123456.cab"

В Windows 8 и Windows 7 можно установить обновление с помощью менеджера пакетов Pkgmgr. Команда:
start /w Pkgmgr /ip /m:c:"c:\Temp\kb4056887\Windows-KB123456.cab"

Примечание. В Windows 10 / Windows Server 2016 менеджер пакетов PkgMgr.exe более не поддерживается. При его запуске появляется предупреждении о необходимости использовать для управления пакетами DISM.exe.

Note: The PkgMgr.exe has been deprecated. Please update your scripts to use dism.exe to extract, install, uninstall, configure and update features and packages for Windows.

windows 10 The PkgMgr.exe has been deprecated

Примечание. Обратите внимание, что языковые пакеты Windows (MUI) также распространяются в формате CAB. Однако не получиться использовать для их установки команду DISM. Вместо этого, для установки новых языков в систему нужно использовать отдельную утилиту lpksetup.exe.

Вы можете добавить в контекстное меню File Explorer контекстное меню для установки CAB файлов. Для этого добавьте следующие *.reg файл в реестр:

Windows Registry Editor Version 5.00
[-HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs]
[HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs]
@="Install"
"HasLUAShield"=""
[HKEY_CLASSES_ROOT\CABFolder\Shell\RunAs\Command]
@="cmd /k dism /online /add-package /packagepath:\"%1\""

Теперь для установки CAB файла нужно выбрать пункт Install в контекстном меню.

Установка CAB и MSU обновления с помощью скриптов

Если вам нужно установить сразу несколько CAB или MSU обновлений на компьютере, вы можете использовать BAT и PowerShell скрипты. Благодаря таким скриптам вам не придется по ставить обновления вручную по одному.

Создайте на диске каталог с обновлениями и скопируйте в него все MSU файлы, которые нужно обновить. Теперь для установки всех обновлений из указанного каталога, достаточно запустить скрипт install_msu.bat:

Set Folder="C:\updates"
for %%f in (%Folder%\*.msu) do (
wusa.exe %%f /quiet /norestart
)

По аналогии можно использовать PowerShell скрипт для установки MSU обновлений из указанной папки:

$dir = (Get-Item -Path c:\temp -Verbose).FullName
Foreach($item in (ls $dir *.msu -Name))
{
echo $item
$item = $dir + "\" + $item
wusa $item /quiet /norestart | Out-Null
}

powershell скрипт для массовой устнавнокеи msu обновлений из папки

Данная инструкция по ручной установке накопительных (если вы не помните что это такое, прочитайте статью про новую модель обновлений Windows систем) и любых других обновлений Windows применима ко всем поддерживаемым версиям ОС: Windows 11/10/8.1 и Windows Server 2022/2019/2016/2012R2.

Время на прочтение5 мин

Количество просмотров18K

Эта статья является логическим продолжением моей предыдущей статьи. Развивая тему добавления (установки/интеграции) пакетов обновлений в образ Windows Я решил написать скрипт оперирующий командами DISM, который автоматизирует процесс и избавляет системных администраторов от рутинных действий. Универсальность скрипта состоит в том, что с его помощью можно установить пакеты обновления на «живую» систему, либо интегрировать в образ Windows — файл install.wim. Гибкость скрипта состоит в том, что его работу можно настроить изменив значение нескольких переменных в начале всего кода.

Как и в предыдущей статье, для примера, мы будем добавлять к образу Windows так называемое Convenience rollup update (KB3125574), а также необходимое Servicing stack update (KB3177467). В ходе работы над скриптом выяснилось, что после интеграции в образ KB3177467, он (образ — install.wim), становится непригодным для дальнейших интеграций. Если устанавливать KB3177467 на «живую» ОС то проблем не возникает. У данной проблемы есть два решения: 1) интегрировать KB3177467 последним 2) заменить «проблемное» обновление его предыдущей версией — KB3020369. Я выбрал второй вариант, реализовав в скрипте ветвление по условию.

Скрипт

@echo off
Title Convenience Rollup - most important updates after SP1

set _arch=x64
set _file=install.wim
set _img=Online
set _mnt=mount
set _lev=2

:pre_menu
cls
dism /Get-WimInfo /LogLevel:%_lev% /WimFile:%_file%
echo -------------------------------------------------------------------------------
if %ERRORLEVEL% NEQ 0 if %ERRORLEVEL% EQU 2 (goto :bit) else (pause & exit)
set /p _ind=Input index or press [Enter] for quit: || exit
if %_ind% EQU 0 goto :bit
if %_ind% GTR 0 if %_ind% LEQ 24 goto :ind_menu
goto :pre_menu

:ind_menu
cls
dism /Get-WimInfo /LogLevel:%_lev% /WimFile:%_file% /Index:%_ind%
echo -------------------------------------------------------------------------------
if %ERRORLEVEL% NEQ 0 pause & goto :pre_menu
choice /c abcdefghijklmnopqrstuvwxyz /n /m "Mount selected image? [m] "
if %ERRORLEVEL% EQU 13 goto :mount
goto :pre_menu

:bit
if %_img%==Online (if "%PROCESSOR_ARCHITECTURE%" == "x86" if not defined PROCESSOR_ARCHITEW6432 set _arch=x86)^
else (dism /Get-WimInfo /LogLevel:%_lev% /WimFile:%_file% /Index:%_ind% /English | find "Architecture : x86" > nul && set _arch=x86)
goto :add

:add
cls
echo Getting packages list. Please wait...
dism /%_img% /Get-Packages /LogLevel:%_lev% /English > %TEMP%\packages.txt
echo -------------------------------------------------------------------------------
if not %_img%==Online (
echo Add: Servicing stack update KB3020369
call :exist .\%_arch%\Windows6.1-KB3020369-%_arch%.cab ||^
dism /%_img% /Add-Package /LogLevel:%_lev% /PackagePath:.\%_arch%\Windows6.1-KB3020369-%_arch%.cab /NoRestart
echo -------------------------------------------------------------------------------
) else (
echo Add: Servicing stack update KB3177467
call :exist .\%_arch%\Windows6.1-KB3177467-%_arch%.cab ||^
dism /%_img% /Add-Package /LogLevel:%_lev% /PackagePath:.\%_arch%\Windows6.1-KB3177467-%_arch%.cab /NoRestart
echo -------------------------------------------------------------------------------
)
echo Add: Convenience rollup update KB3125574
call :exist .\%_arch%\Windows6.1-KB3125574-v4-%_arch%.cab ||^
dism /%_img% /Add-Package /LogLevel:%_lev% /PackagePath:.\%_arch%\Windows6.1-KB3125574-v4-%_arch%.cab /NoRestart
echo -------------------------------------------------------------------------------
del %TEMP%\packages.txt
if not exist %_file% exit
pause
goto :unmount

:exist
dism /%_img% /Get-PackageInfo /LogLevel:%_lev% /PackagePath:%1 /English | find "Package Identity" | findstr /g:/ %TEMP%\packages.txt > nul
exit /b

:mount
cls
md %_mnt%
dism /Mount-Wim /LogLevel:%_lev% /WimFile:%_file% /Index:%_ind% /MountDir:%_mnt%
if %ERRORLEVEL% NEQ 0 rd %_mnt% & pause & exit
set _img=Image:%_mnt%
goto :bit

:unmount
cls
if not %_img%==Online (
dism /Unmount-Wim /LogLevel:%_lev% /MountDir:%_mnt% /Commit
rd %_mnt%
)
set _arch=x64
set _img=Online
goto :pre_menu

Файлы и папки

Файлы пакетов обновлений здесь не прилагаю, так как указанные в скрипте взяты для образца. По месту нахождения скрипта должны быть созданы папки x64 и x86 в которые нужно разместить нужные пакеты обновлений. Сам файл скрипта можно сохранить в кодировке ANSI если не использовать кириллицу для вывода информационных сообщений. А если хочется видеть русский текст, то нужно cmd-файл сохранить в кодировке OEM 866.

Использование

Как уже отмечалось, скрипт может установить обновления или интегрировать их. Если в папке запуска отсутствует файл образа — install.wim, то скрипт выполняет установку обновлений в полностью автоматическом режиме. Если в папке запуска присутствует файл образа — install.wim, то скрипт выполняет считывание из него информацию об имеющихся «индексах» и предлагает ввести номер. После этого отображается расширенная информация о выбранном «индексе» выдаётся запрос на монтирование. Нажатие любой клавиши приводит к возврату, а нажатие клавиши [m] запускает следующую цепочку действий: монтирование образа, интеграция обновлений, размонтирование образа, возврат в меню выбора «индеска». После чего можно выбрать другой «индекс» для интеграции обновлений. Выбор «индекса» под номером 0 запускает установку обновлений на «живую» ОС.

Разбор кода

Вначале командой set происходит установка переменных. Можно изменить предполагаемое имя файла образа install.wim (например, на install.esd). Можно изменить имя папки монтирования или задать путь, если папка монтирования должна находится за пределами папки запуска. Можно изменить «уровень» логирования, для исключения информационных сообщений из файла лога системы DISM.

:pre_menu

Предварительное меню. Получение основной информации о wim-файле с контролем ошибок. Если ошибка 2 — отсутствует wim-файл, то запуск в режиме Online. Не нашел информацию о максимальном количестве «индексов» в одном образе и установил значение 24.

:ind_menu

Индексное меню. Получение расширенной информации о выбранном «индексе» в wim-файле с контролем ошибок. Предложение смонтировать «индекс».

:bit

Определение разрядности ОС. Для интерактивного обслуживания считываются системные переменные среды, а для автономного обслуживания из образа запрашивается необходимая информация и в ней ищется ключевая строка.

:add

Добавление пакетов. Чтобы не делать лишней работы вначале происходит запрос списка уже добавленных (установленных или интегрированных) пакетов, а потом перед каждой командой запуска осуществляется вызов псевдофункции для проверки.

:exist

Псевдофункция проверки. Работа описана в статье Проверка присутствия пакета обновления в системе перед установкой. Код слегка подправлен.

:mount

Монтирование образа. Предварительно создаётся папка монтирования. Контроль ошибок. Изменяется переменная определяющая спецификацию образа, теперь указывает на путь к автономному образу.

:unmount

Размонтирование образа. Если выполнялось интерактивное обслуживание (/Online), то размонтировать не нужно. Возвращение переменных к исходным значениям.

Совместимость

Работа данного скрипта тестировалась на ОС Windows 7 со встроенной утилитой dism.exe версии 6.1.7600.16385. В версиях ОС Windows 8, 8.1, 10 утилита dism.exe системы DISM имеет более высокую версию. Думаю, обратная совместимость сохранена, и скрипт будет также работоспособен. К тому же появится возможность работать с esd-файлами.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Загрузочная usb mac os на windows
  • Notepad dark theme windows
  • Онлайн сброс пароля windows
  • Какой сетевой драйвер нужен для windows 10 чтобы работал интернет
  • Microsoft windows server 2022 torrent