background img

The New Stuff

Скрипты для работы с обновлениями Windows 7/8 [WinUpdate_ru-board. com]

    Примечание:
    Статья обновлена: 5 февраля 2014. Новая версия - v1.5. Старая - более не актуальна.
    Здесь я опишу свою последнюю разработку на C++, она же первая, которая не является типичной задачкой из какого-то учебника, а создавалась с конкретной прикладной целью, для решения определенных поставленных передо мной задач. А именно для работы с обновлениями (скачиванием, установкой, поддержанием в актуальном виде).
    В данной теме, постараюсь, описать все нюансы работы с этими программами (еще могу назвать их скриптами, что является одним и тем же, т.е синонимом): что выполняет каждый скрипт; какие вопросы задает, и что они значат; что получается в итоге, и какие промежуточные результаты при этом создаются.
    Сразу хочу сказать, что являюсь дилетантом в области программирования, никогда им профессионально не занимался, а всего лишь учусь этому нелегкому делу (где-то около года). Поэтому высмеивать нерациональные мои методы бессмысленно. Но вразумительной критике и замечаниям всегда рад, особенно, если в результате удастся чему-нибудь новому научиться.
    Отдельная благодарность ув. TAILORD, за создание списков с обновлениями Windows, и поддержании их в актуальном состоянии. Именно его сообщения являются основными входными данными в моих скриптах. А так же другим участникам форума ru-board.com, в частности данной темы, которые принимали участие в разработке данных скриптов: тестировании и высказывании своих советов и пожеланий.
    Вступление закончено. Дальше по плану.

    Пакет WinUpdate_ru-board.com_1.5 (скачать) состоит из 4 программ:
  • getUpdate - получает прямые ссылки на обновления выбранного списка и выбранной разрядности, и если требуется - скачивает их, так же служит для закачки дополнительных программ по прямым ссылкам;
  • deleteUpdate - удаляет неактуальные скачанные обновления, которые были заменены Microsoft;
  • installUpdate - устанавливает скачанные обновления, исходя из разрядности ОС, на которой запущен
  • installUpdateCreateCmd - создает cmd-скрипт для самостоятельной установки требуемых обновлений, разрядность выбирается пользователем
    Кроме основных программ пакет содержит:
  • каталоги, необходимые для работы скриптов;
  • библиотеки Visual C++ 2010 (msvcp100.dll, msvcr100.dll), необходимые для запуска скриптов, если не установлен Microsoft Visual C++ 2010 SP1 Redistributable Package;
  • curl.exe - консольная утилита cURL, для загрузки файлов из интернета.
  • getLength.exe - собственная утилита, которая получает и возвращает размер файла из ответа сервера.
  • start_d.bat - bat-файл, содержащий команды передаваемые cURL и служащий для поддержания требуемых функций по загрузке файлов.
  • прочие файлы, которые создаются в процессе работы скрипта.
    Пойдем по порядку, с загрузки обновлений.

getUpdate - получение обновлений

    Этот скрипт обрабатывает списки обновлений. А берет он их отсюда для Windows 7, и отсюда для Windows 8.1. На выходе получаем или скачанные выбранные обновления, или список прямых ссылок для их закачки.
    Начну с того как он берет эти списки. Возможны 2 варианта:
1. Автоматически с моего ресурса (из дропбокса). Обновление списков ложится на мои плечи. Обновляю раз в месяц, или по требованию. Если необходимы последние списки - используйте вариант 2.
2. Предварительно самостоятельно сохранив список обновлений (сообщение TAILORD на ru-board (Win7, Win8) в режиме редактирования (Win7, Win8)) в текстовый файл upd_new.txt в каталоге text. Только после этого запускаем getUpdate.
Если upd_new.txt присутствует в каталоге text, то новый список закачан не будет, а будет взят upd_new.txt за основу.
    Предварительные действия окончены, переходим к запуску getUpdate.

    Примечание: не стал менять скриншоты для новой версии (оставил скрины для v1.4) - смысл ведь не изменился.

Шаг 1. Запускаем скрипт, и в зависимости от способа получения списков видим следующие сообщения:
    Вариант 1:

    Вариант 2:
    Или вариант с ошибкой, из-за отсутствия доступа к интернету:
Примечание:
В версии 1.5 добавил отображение даты используемых списков обновлений (если необходимы последние списки - читайте выше):


Шаг 2. Выбираем какие списки будем качать. В Win7 их 3, в Win8 их 2.
    О их назначении. Win7:
Список 1 – Содержит так или иначе обязательные для установки, критические и другие обновления.
Список 2 – Содержит Microsoft .NET Framework 4.5.1, IE11 и их обновления.
Список 3 – Содержит критические и другие обновления, но требующие определенные условия, либо применяется в редких случаях или предоставляет дополнительные возможности, не являющиеся обязательными.
    О их назначении. Win8:
Список 1 – Содержит так или иначе обязательные для установки, критические и другие обновления.
Список 2 – Содержит критические и другие обновления, но требующие определенные условия, либо применяется в редких случаях или предоставляет дополнительные возможности, не являющиеся обязательными.
    Для Win7 в большинстве случаев достаточно 1 и 2 списка, для Win8 - 1 списка.
"y" - включить этот список в список закачиваемых (любая введенная фраза начинающаяся на "y" будет распознана как положительный ответ).
"n" или все кроме "y" - отрицательный ответ (не включать в список закачиваемых).
    При выборе 2 списка в Win7 будет задан вопрос: 

Какую локализацию (язык) IE качать ("r" - русскую или "e" - английскую)?
("IE11: RUS or ENG? (r-RUS, e-ENG):")
    Пример выбора 1 и 2 списков, и русской версии IE11:

    Если ничего не вводить, и в случае, когда список additional_download_links.txt отсутствует или пуст - можете увидеть следующее:

    Если ничего не вводить, и в случае, когда список additional_download_links.txt присутствует в папке text и содержит ссылки на скачивание файлов - пойдет скачивание этих файлов в каталог additional_programs:

Шаг 3. Выбираем разрядность скачиваемых обновлений.
  • "<1>   x86"          - скачать обновления только для 32-разрядной ОС (архитектура x86).
  • "<2>   x64"          - скачать обновления только для 64-разрядной ОС (архитектура x64).
  • "<3>   x86 / x64" - скачать обновления, которые идут и для 32- и для 64-разрядной ОС (такие как KB931125, KB2798897, KB2758694, .NET Framework 4.5.1 и др.).
    Просто ввести цифру, соответствующую требуемому пункту. Для закачки обновлений для 32- и 64-разрядных ОС (т.е. 1 и 2 пунктов данного меню) необходимо запустить скрипт 2 раза, порядок закачки не имеет значения.
    Пример выбора обновлений для 64-разрядной ОС:
    Пример ошибочного выбора:
    После корректного выбора разрядности в каталоге text создастся текстовый документ upd_download_links.txt, который содержит прямые ссылки на обновления выбранной разрядности.

Шаг 4. Закачиваем их или нет.
    Начну с отрицательного ответа. Введя "n" или все кроме "y" - скрипт успешно завершает свою работу, и вы можете самостоятельно скачать обновления по прямым ссылкам, сохраненных в документе upd_download_links.txt.
    Ответив "y" - будет выведено сообщение с предложением проверить и/или откорректировать файл содержащий прямые ссылки на обновления.
    Нажав любую клавишу, пойдет процесс загрузки выбранных обновлений.

    Выделю основные составляющие в этом множестве символов, на которые стоит обратить внимание:

1 - Первое число - порядковый номер закачиваемого файла. Второе - всего файлов.
    Примечание:
    Нумерация своя. С нумерацией на ру-боарде может не совпадать.
2 - Имя скачиваемого файла.
3 - Имя каталога, в который загружается файл.
4 - Процесс закачки данного файла.
5 - Размер скачанного файла (в байтах).
    Также после закачки Вы можете увидеть: время потраченное на загрузку файла и среднюю скорость загрузки. Последняя строчка означает, что размер локального файла полностью совпадает с размером файла на сервере и докачка не требуется.

    Рассмотрим исключительные ситуации:
1.    Если закачиваемый файл уже присутствует в папке и полностью скачан, и файл на сервере не новее локального, то вы можете примерно следующее окно:
    При этом полоса загрузки не будет показана, и загруженный размер будет равняться 0 байт. Повторное скачивание данного файла происходить не будет.
2.    Если файл на сервере обновился (т.е. локальный файл оказался старее файла на сервере) - локальный файл будет заменен на новый. Сравнение происходит по дате последней модификации. Процесс загрузки аналогичен обычной загрузке файла.
3.    Закачка была прервана по каким-либо причинам. После повторного запуска - закачка продолжится с места обрыва (если это возможно). Загрузка будет происходить до тех пор пока размер локального файла не будет равен размеру файла на сервере:
    Примечание:
    1. Надпись "Size: local=[8145557] "less" server=[15859416]", говорит о том, что размер локального файла меньше размера файла на сервере, а значит будет произведена его докачка.
    2. В некоторых случаях сервер не возвращает по запросу размер загружаемого файла, и вы можете в таком случае увидеть надпись: Server size=[0] "==" 0. Обычно на следующий запрос он все же отправляет размер файла, но, чисто теоретически, есть шанс, что этот процесс может не произойти, и произойдет зацикливание. И чтобы оно не произошло было введено ограничение - 5 проверок. После пяти не успешных сравнений размера имеющегося файла с размером, который возвращает сервер - данная ссылка будет признана нерабочей и будет сохранена в файл not_download.txt, и скрипт перейдет к следующей ссылке. В дальнейшем вы можете вручную попробовать скачать не скачанные файлы. Если такие имеются вы увидите следующее окно:


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

    На этом работа со скриптом getUpdate - окончена.
    Повторю основные нюансы:
  • Для скачивания последнего списка с обновлениями - самостоятельно сохраняйте требуемое сообщение TAILORD в режиме редактирования (Win7, Win8) в текстовый файл upd_new.txt в каталоге text и только после этого запускайте getUpdate.
  • x86 / x64  -  это обновления и для 32- и для 64-разрядной ОС.
  • Для скачивания не всех обновлений - отредактируйте, созданный в процессе работы скрипта, документ upd_download_links.txt под свои требования.
  • Также, используя этот документ, содержащие прямые ссылки на выбранные обновления, можно произвести закачку файлов через свой любимый менеджер закачек.
  • Для закачки дополнительных программ, добавьте прямые ссылки на них в документ additional_download_links.txt перед запуском getUpdate. Данные файлы будут загружены после обновлений в папку additional_programs.

deleteUpdate - удаление неактуальных скачанных обновлений

    Этот скрипт получает списки с замененными обновлениями, которые были заменены Microsoft на другие, и ищет эти неактуальные обновления среди скачанных в каталогах x86_upd, x64_upd, x86x64_upd. Если они присутствуют в этих папках, то с согласия пользователя - будут удалены.
    Списки с замененными обновлениями содержатся в "Отчете об изменениях в списках" (Win7, Win8).
    Поэтому перед запуском getUpdate , в случае когда уже большинство обновлений было скачано, рекомендуется запустить deleteUpdate и удалить все замененные обновления.
    Предварительные действия окончены, переходим к запуску deleteUpdate.

    Примечание:
   Иногда происходит удаление некоторых актуальных скачанных обновлений (но вы же все равно собираетесь запускать потом getUpdate - так что ничего страшного, я думаю, не случится, несколько лишних мегабайт при нынешних скоростях - пустяки).


Шаг 1. Запускаем скрипт, и после успешного скачивания списка замененных обновлений, выбираем разрядность проверяемых обновлений на актуальность:
    Необходимо выбрать тип (разрядность) обновлений, которые подлежат сканированию на замененные обновления.
  • "<1>   x86"             - проверить только папку x86_upd (обновления для 32-разрядной ОС).
  • "<2>   x64"             - проверить только папку x64_upd (обновления для 64-разрядной ОС).
  • "<3>   x86 & x64"  - проверить папки x86_upd и x64_upd.
    Примечание:
   Обновления находящиеся в папке x86x64_upd не проверяются. Т.е. за их актуализацией придется следить вручную, благо их там не так много (<10) и они почти не заменяются.


    К примеру, выберем 3 пункт (x86 & x64).

Шаг 2. После выбора разрядности, видим список файлов обновлений подлежащих удалению:
    Это окно означает:
Каталог x86_upd не содержит замененных обновлений, подлежащих удалению.
А вот каталог x64_upd содержит 2 замененных обновления, которые можно удалить ответив "y" в появившееся приглашение.

    Или в случае, когда каталоги не содержат замененных обновлений:
    Если в каталогах присутствуют обновления, подлежащие удалению, то создаются текстовые документы x86_del_upd.txt и x64_del_upd.txt, которые содержат соответствующие имена файлов, которые будут удалены.
    Файл irrelevant_upd.txt - содержит имена (части имен) обновлений, которые были заменены, и являются неактуальными (именно по ним ведется поиск удаляемых файлов).

installUpdate - установка скачанных обновлений

    Этот скрипт устанавливает обновления, заранее скачанные и находящиеся в папках x86_upd, x64_upd и x86x64_upd. Разрядность устанавливаемых обновлений выбирается исходя из разрядности ОС, на которой запущен данный скрипт.
    Установка ведется в скрытом тихом режиме, без участия пользователя. После установки всех обновлений будет предложена перезагрузка ОС, для завершения установки обновлений.
    Для установки обновлений не используется сторонних утилит. Все обновления устанавливаются через "Автономный установщик обновлений Windows (Wusa.exe)", который присутствует в стандартной версии Windows. Для установки exe-файлов не являющихся обновлениями используются ключи "/q /norestart".
   Обновления устанавливаются в алфавитном порядке (по номеру KB). В число первых были поставлены .NET и IE11, чтобы их обновления не ставились вперед них.
    Если в папках с обновлениями находится IE разным версий (ru и en) - будет выведен запрос устанавливаемой версии (при условии, что имена файлов не менялись).
    Предварительные действия окончены, переходим к запуску installUpdate.

    Примечание:
   1. В версии 1.5 оставил только установку IE11 и его обновлений. Так что перед запуском скрипта убедитесь, что каталоги с обновлениями не содержат устаревших версий IE9 и IE10 и их обновлений. И удалите их, если они там есть.
   2. Все-таки слишком уж долго ставятся все обновления этим способом по сравнению с получением их через узел WindowsUpdate. Не знаю почему так, но учтите это, если вам дорого ваше время. Это же касается и установку через cmd-скрипт.


Шаг 1. Запускаем скрипт, и немножко подумав соглашаемся с установкой обновлений.
    Данная проверка была добавлена на случай непреднамеренного запуска скрипта установки обновлений.

Шаг 2. Ждем пока произойдет установка всех имеющихся обновлений.
Полная установка 1 списка занимает около 1-2 часов.

Шаг 3. После установки всех обновлений будет предложено перезагрузить компьютер для завершения установки. Лучше согласиться, иначе перезагружаемся самостоятельно.
После перезагрузки можете начинать работать на обновленной системе. Больше действий не требуется.

installUpdateCreateCmd - создание cmd-скрипта для установки скачанных обновлений

    Чтобы знать какие обновления будут установлены, в каком порядке и как, а также управлять этим процессом - был написан этот скрипт. Он создает cmd-скрипт с именем installUpdate.cmd, который содержит все необходимые команды для установки скачанных обновлений из папок x86_upd, x64_upd и x86x64_upd.
    installUpdateCreateCmd не устанавливает обновления и никаких действий над ОС не производит!
    Он всего лишь создает cmd-скрипт для их установки. А его вы можете отредактировать по своему усмотрению (выбрать не все обновления, изменить порядок установки, и пр.).
    В своей работе он полностью повторяет скрипт installUpdate, за исключением отсутствия автоматической установки обновлений.

Шаг 1. Выбрать разрядность ОС, на которой планируется развернуть скрипт.
Шаг 2. Запустить скрипт и дождаться получения, примерно, следующего сообщения:
Шаг 3. Редактировать полученный cmd-скрипт installUpdate.cmd по своему усмотрению.


При копировании статьи просьба указывать источник и автора.
С уважением, GRomR1.
    Примечание:
    Статья обновлена: 5 февраля 2014. Новая версия - v1.5. Старая - более не актуальна.
    Здесь я опишу свою последнюю разработку на C++, она же первая, которая не является типичной задачкой из какого-то учебника, а создавалась с конкретной прикладной целью, для решения определенных поставленных передо мной задач. А именно для работы с обновлениями (скачиванием, установкой, поддержанием в актуальном виде).
    В данной теме, постараюсь, описать все нюансы работы с этими программами (еще могу назвать их скриптами, что является одним и тем же, т.е синонимом): что выполняет каждый скрипт; какие вопросы задает, и что они значат; что получается в итоге, и какие промежуточные результаты при этом создаются.
    Сразу хочу сказать, что являюсь дилетантом в области программирования, никогда им профессионально не занимался, а всего лишь учусь этому нелегкому делу (где-то около года). Поэтому высмеивать нерациональные мои методы бессмысленно. Но вразумительной критике и замечаниям всегда рад, особенно, если в результате удастся чему-нибудь новому научиться.
    Отдельная благодарность ув. TAILORD, за создание списков с обновлениями Windows, и поддержании их в актуальном состоянии. Именно его сообщения являются основными входными данными в моих скриптах. А так же другим участникам форума ru-board.com, в частности данной темы, которые принимали участие в разработке данных скриптов: тестировании и высказывании своих советов и пожеланий.
    Вступление закончено. Дальше по плану.

    Пакет WinUpdate_ru-board.com_1.5 (скачать) состоит из 4 программ:
  • getUpdate - получает прямые ссылки на обновления выбранного списка и выбранной разрядности, и если требуется - скачивает их, так же служит для закачки дополнительных программ по прямым ссылкам;
  • deleteUpdate - удаляет неактуальные скачанные обновления, которые были заменены Microsoft;
  • installUpdate - устанавливает скачанные обновления, исходя из разрядности ОС, на которой запущен
  • installUpdateCreateCmd - создает cmd-скрипт для самостоятельной установки требуемых обновлений, разрядность выбирается пользователем
    Кроме основных программ пакет содержит:
  • каталоги, необходимые для работы скриптов;
  • библиотеки Visual C++ 2010 (msvcp100.dll, msvcr100.dll), необходимые для запуска скриптов, если не установлен Microsoft Visual C++ 2010 SP1 Redistributable Package;
  • curl.exe - консольная утилита cURL, для загрузки файлов из интернета.
  • getLength.exe - собственная утилита, которая получает и возвращает размер файла из ответа сервера.
  • start_d.bat - bat-файл, содержащий команды передаваемые cURL и служащий для поддержания требуемых функций по загрузке файлов.
  • прочие файлы, которые создаются в процессе работы скрипта.
    Пойдем по порядку, с загрузки обновлений.

getUpdate - получение обновлений

    Этот скрипт обрабатывает списки обновлений. А берет он их отсюда для Windows 7, и отсюда для Windows 8.1. На выходе получаем или скачанные выбранные обновления, или список прямых ссылок для их закачки.
    Начну с того как он берет эти списки. Возможны 2 варианта:
1. Автоматически с моего ресурса (из дропбокса). Обновление списков ложится на мои плечи. Обновляю раз в месяц, или по требованию. Если необходимы последние списки - используйте вариант 2.
2. Предварительно самостоятельно сохранив список обновлений (сообщение TAILORD на ru-board (Win7, Win8) в режиме редактирования (Win7, Win8)) в текстовый файл upd_new.txt в каталоге text. Только после этого запускаем getUpdate.
Если upd_new.txt присутствует в каталоге text, то новый список закачан не будет, а будет взят upd_new.txt за основу.
    Предварительные действия окончены, переходим к запуску getUpdate.

    Примечание: не стал менять скриншоты для новой версии (оставил скрины для v1.4) - смысл ведь не изменился.

Шаг 1. Запускаем скрипт, и в зависимости от способа получения списков видим следующие сообщения:
    Вариант 1:

    Вариант 2:
    Или вариант с ошибкой, из-за отсутствия доступа к интернету:
Примечание:
В версии 1.5 добавил отображение даты используемых списков обновлений (если необходимы последние списки - читайте выше):


Шаг 2. Выбираем какие списки будем качать. В Win7 их 3, в Win8 их 2.
    О их назначении. Win7:
Список 1 – Содержит так или иначе обязательные для установки, критические и другие обновления.
Список 2 – Содержит Microsoft .NET Framework 4.5.1, IE11 и их обновления.
Список 3 – Содержит критические и другие обновления, но требующие определенные условия, либо применяется в редких случаях или предоставляет дополнительные возможности, не являющиеся обязательными.
    О их назначении. Win8:
Список 1 – Содержит так или иначе обязательные для установки, критические и другие обновления.
Список 2 – Содержит критические и другие обновления, но требующие определенные условия, либо применяется в редких случаях или предоставляет дополнительные возможности, не являющиеся обязательными.
    Для Win7 в большинстве случаев достаточно 1 и 2 списка, для Win8 - 1 списка.
"y" - включить этот список в список закачиваемых (любая введенная фраза начинающаяся на "y" будет распознана как положительный ответ).
"n" или все кроме "y" - отрицательный ответ (не включать в список закачиваемых).
    При выборе 2 списка в Win7 будет задан вопрос: 

Какую локализацию (язык) IE качать ("r" - русскую или "e" - английскую)?
("IE11: RUS or ENG? (r-RUS, e-ENG):")
    Пример выбора 1 и 2 списков, и русской версии IE11:

    Если ничего не вводить, и в случае, когда список additional_download_links.txt отсутствует или пуст - можете увидеть следующее:

    Если ничего не вводить, и в случае, когда список additional_download_links.txt присутствует в папке text и содержит ссылки на скачивание файлов - пойдет скачивание этих файлов в каталог additional_programs:

Шаг 3. Выбираем разрядность скачиваемых обновлений.
  • "<1>   x86"          - скачать обновления только для 32-разрядной ОС (архитектура x86).
  • "<2>   x64"          - скачать обновления только для 64-разрядной ОС (архитектура x64).
  • "<3>   x86 / x64" - скачать обновления, которые идут и для 32- и для 64-разрядной ОС (такие как KB931125, KB2798897, KB2758694, .NET Framework 4.5.1 и др.).
    Просто ввести цифру, соответствующую требуемому пункту. Для закачки обновлений для 32- и 64-разрядных ОС (т.е. 1 и 2 пунктов данного меню) необходимо запустить скрипт 2 раза, порядок закачки не имеет значения.
    Пример выбора обновлений для 64-разрядной ОС:
    Пример ошибочного выбора:
    После корректного выбора разрядности в каталоге text создастся текстовый документ upd_download_links.txt, который содержит прямые ссылки на обновления выбранной разрядности.

Шаг 4. Закачиваем их или нет.
    Начну с отрицательного ответа. Введя "n" или все кроме "y" - скрипт успешно завершает свою работу, и вы можете самостоятельно скачать обновления по прямым ссылкам, сохраненных в документе upd_download_links.txt.
    Ответив "y" - будет выведено сообщение с предложением проверить и/или откорректировать файл содержащий прямые ссылки на обновления.
    Нажав любую клавишу, пойдет процесс загрузки выбранных обновлений.

    Выделю основные составляющие в этом множестве символов, на которые стоит обратить внимание:

1 - Первое число - порядковый номер закачиваемого файла. Второе - всего файлов.
    Примечание:
    Нумерация своя. С нумерацией на ру-боарде может не совпадать.
2 - Имя скачиваемого файла.
3 - Имя каталога, в который загружается файл.
4 - Процесс закачки данного файла.
5 - Размер скачанного файла (в байтах).
    Также после закачки Вы можете увидеть: время потраченное на загрузку файла и среднюю скорость загрузки. Последняя строчка означает, что размер локального файла полностью совпадает с размером файла на сервере и докачка не требуется.

    Рассмотрим исключительные ситуации:
1.    Если закачиваемый файл уже присутствует в папке и полностью скачан, и файл на сервере не новее локального, то вы можете примерно следующее окно:
    При этом полоса загрузки не будет показана, и загруженный размер будет равняться 0 байт. Повторное скачивание данного файла происходить не будет.
2.    Если файл на сервере обновился (т.е. локальный файл оказался старее файла на сервере) - локальный файл будет заменен на новый. Сравнение происходит по дате последней модификации. Процесс загрузки аналогичен обычной загрузке файла.
3.    Закачка была прервана по каким-либо причинам. После повторного запуска - закачка продолжится с места обрыва (если это возможно). Загрузка будет происходить до тех пор пока размер локального файла не будет равен размеру файла на сервере:
    Примечание:
    1. Надпись "Size: local=[8145557] "less" server=[15859416]", говорит о том, что размер локального файла меньше размера файла на сервере, а значит будет произведена его докачка.
    2. В некоторых случаях сервер не возвращает по запросу размер загружаемого файла, и вы можете в таком случае увидеть надпись: Server size=[0] "==" 0. Обычно на следующий запрос он все же отправляет размер файла, но, чисто теоретически, есть шанс, что этот процесс может не произойти, и произойдет зацикливание. И чтобы оно не произошло было введено ограничение - 5 проверок. После пяти не успешных сравнений размера имеющегося файла с размером, который возвращает сервер - данная ссылка будет признана нерабочей и будет сохранена в файл not_download.txt, и скрипт перейдет к следующей ссылке. В дальнейшем вы можете вручную попробовать скачать не скачанные файлы. Если такие имеются вы увидите следующее окно:


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

    На этом работа со скриптом getUpdate - окончена.
    Повторю основные нюансы:
  • Для скачивания последнего списка с обновлениями - самостоятельно сохраняйте требуемое сообщение TAILORD в режиме редактирования (Win7, Win8) в текстовый файл upd_new.txt в каталоге text и только после этого запускайте getUpdate.
  • x86 / x64  -  это обновления и для 32- и для 64-разрядной ОС.
  • Для скачивания не всех обновлений - отредактируйте, созданный в процессе работы скрипта, документ upd_download_links.txt под свои требования.
  • Также, используя этот документ, содержащие прямые ссылки на выбранные обновления, можно произвести закачку файлов через свой любимый менеджер закачек.
  • Для закачки дополнительных программ, добавьте прямые ссылки на них в документ additional_download_links.txt перед запуском getUpdate. Данные файлы будут загружены после обновлений в папку additional_programs.

deleteUpdate - удаление неактуальных скачанных обновлений

    Этот скрипт получает списки с замененными обновлениями, которые были заменены Microsoft на другие, и ищет эти неактуальные обновления среди скачанных в каталогах x86_upd, x64_upd, x86x64_upd. Если они присутствуют в этих папках, то с согласия пользователя - будут удалены.
    Списки с замененными обновлениями содержатся в "Отчете об изменениях в списках" (Win7, Win8).
    Поэтому перед запуском getUpdate , в случае когда уже большинство обновлений было скачано, рекомендуется запустить deleteUpdate и удалить все замененные обновления.
    Предварительные действия окончены, переходим к запуску deleteUpdate.

    Примечание:
   Иногда происходит удаление некоторых актуальных скачанных обновлений (но вы же все равно собираетесь запускать потом getUpdate - так что ничего страшного, я думаю, не случится, несколько лишних мегабайт при нынешних скоростях - пустяки).


Шаг 1. Запускаем скрипт, и после успешного скачивания списка замененных обновлений, выбираем разрядность проверяемых обновлений на актуальность:
    Необходимо выбрать тип (разрядность) обновлений, которые подлежат сканированию на замененные обновления.
  • "<1>   x86"             - проверить только папку x86_upd (обновления для 32-разрядной ОС).
  • "<2>   x64"             - проверить только папку x64_upd (обновления для 64-разрядной ОС).
  • "<3>   x86 & x64"  - проверить папки x86_upd и x64_upd.
    Примечание:
   Обновления находящиеся в папке x86x64_upd не проверяются. Т.е. за их актуализацией придется следить вручную, благо их там не так много (<10) и они почти не заменяются.


    К примеру, выберем 3 пункт (x86 & x64).

Шаг 2. После выбора разрядности, видим список файлов обновлений подлежащих удалению:
    Это окно означает:
Каталог x86_upd не содержит замененных обновлений, подлежащих удалению.
А вот каталог x64_upd содержит 2 замененных обновления, которые можно удалить ответив "y" в появившееся приглашение.

    Или в случае, когда каталоги не содержат замененных обновлений:
    Если в каталогах присутствуют обновления, подлежащие удалению, то создаются текстовые документы x86_del_upd.txt и x64_del_upd.txt, которые содержат соответствующие имена файлов, которые будут удалены.
    Файл irrelevant_upd.txt - содержит имена (части имен) обновлений, которые были заменены, и являются неактуальными (именно по ним ведется поиск удаляемых файлов).

installUpdate - установка скачанных обновлений

    Этот скрипт устанавливает обновления, заранее скачанные и находящиеся в папках x86_upd, x64_upd и x86x64_upd. Разрядность устанавливаемых обновлений выбирается исходя из разрядности ОС, на которой запущен данный скрипт.
    Установка ведется в скрытом тихом режиме, без участия пользователя. После установки всех обновлений будет предложена перезагрузка ОС, для завершения установки обновлений.
    Для установки обновлений не используется сторонних утилит. Все обновления устанавливаются через "Автономный установщик обновлений Windows (Wusa.exe)", который присутствует в стандартной версии Windows. Для установки exe-файлов не являющихся обновлениями используются ключи "/q /norestart".
   Обновления устанавливаются в алфавитном порядке (по номеру KB). В число первых были поставлены .NET и IE11, чтобы их обновления не ставились вперед них.
    Если в папках с обновлениями находится IE разным версий (ru и en) - будет выведен запрос устанавливаемой версии (при условии, что имена файлов не менялись).
    Предварительные действия окончены, переходим к запуску installUpdate.

    Примечание:
   1. В версии 1.5 оставил только установку IE11 и его обновлений. Так что перед запуском скрипта убедитесь, что каталоги с обновлениями не содержат устаревших версий IE9 и IE10 и их обновлений. И удалите их, если они там есть.
   2. Все-таки слишком уж долго ставятся все обновления этим способом по сравнению с получением их через узел WindowsUpdate. Не знаю почему так, но учтите это, если вам дорого ваше время. Это же касается и установку через cmd-скрипт.


Шаг 1. Запускаем скрипт, и немножко подумав соглашаемся с установкой обновлений.
    Данная проверка была добавлена на случай непреднамеренного запуска скрипта установки обновлений.

Шаг 2. Ждем пока произойдет установка всех имеющихся обновлений.
Полная установка 1 списка занимает около 1-2 часов.

Шаг 3. После установки всех обновлений будет предложено перезагрузить компьютер для завершения установки. Лучше согласиться, иначе перезагружаемся самостоятельно.
После перезагрузки можете начинать работать на обновленной системе. Больше действий не требуется.

installUpdateCreateCmd - создание cmd-скрипта для установки скачанных обновлений

    Чтобы знать какие обновления будут установлены, в каком порядке и как, а также управлять этим процессом - был написан этот скрипт. Он создает cmd-скрипт с именем installUpdate.cmd, который содержит все необходимые команды для установки скачанных обновлений из папок x86_upd, x64_upd и x86x64_upd.
    installUpdateCreateCmd не устанавливает обновления и никаких действий над ОС не производит!
    Он всего лишь создает cmd-скрипт для их установки. А его вы можете отредактировать по своему усмотрению (выбрать не все обновления, изменить порядок установки, и пр.).
    В своей работе он полностью повторяет скрипт installUpdate, за исключением отсутствия автоматической установки обновлений.

Шаг 1. Выбрать разрядность ОС, на которой планируется развернуть скрипт.
Шаг 2. Запустить скрипт и дождаться получения, примерно, следующего сообщения:
Шаг 3. Редактировать полученный cmd-скрипт installUpdate.cmd по своему усмотрению.


При копировании статьи просьба указывать источник и автора.
С уважением, GRomR1.

0 коммент.:

Отправить комментарий

Popular Posts