23 февраля 2013 г.

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

    Важная информация:
    Программа не обновлялась с 2014 года. Поэтому возможны ошибки в работе над новыми списками. Используйте ее на свой страх и риск. Обязательно ознакомьтесь с комментариями людей в конце статьи. Обновлять программу не собираюсь.
    Примечание:
    Статья обновлена: 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.

71 комментарий:

  1. Очень хороший набор, пока нормально,
    будем дальше тестировать. Автору респект.

    ОтветитьУдалить
  2. Огромное спасибо.
    Было бы хорошо добавить поддержку обновлений для Windows XP из соответствующей темы на ру-борде.
    Автор молодец.

    ОтветитьУдалить
  3. Поддержка обновлений WinXP не планируется. Нет нужды в этом.
    Привык устанавливать сборку с уже интегрированными обновлениями, нежели обновлять ОС. Тем более она уже устарела все-таки.
    Используйте UpdatePack-XPSP3-Rus Live от simplix'а:
    http://forum.oszone.net/thread-180712.html

    ОтветитьУдалить
  4. Автоматически скачиваются мартовские только обновления, с новой страницы ru-board обновы за апрель не скачиваются. Приходится ручками.

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

      Удалить
  5. здравствуйте! хороший набор... спасибо за проект, очень удобно скачивать и устанавливать обновления... у вас список устарел, он у вас по 09.04.2013 а у TAILORD
    уже по 22.04.2013... обновите список как сможете...

    ОтветитьУдалить
  6. можно вопрос, когда скачиваешь список 2 Microsoft .NET Framework 4.5 тоже скачивается? у меня в папке нету самого установочного, а только обновления для них....

    ОтветитьУдалить
  7. При последовательной загрузке additional_programs
    Microsoft Visual C++ 2005
    Microsoft Visual C++ 2008
    Microsoft Visual C++ 2010
    Microsoft Visual C++ 2012
    заменяют друг дрга т.к. у них одинаковые названия не зависимо от года
    vcredist_x64.EXE
    vcredist_x86.EXE

    ОтветитьУдалить
  8. а если ранее уже были установлены некоторые обновления он просто пропустит или перезапишет?

    ОтветитьУдалить
    Ответы
    1. Установка происходит через стандартный установщик обновлений Windows, а он, насколько мне известно, если обновление уже есть в системе - пропускает его установку.

      Удалить
  9. Подскажите как выполнить сохранение в режиме редактирования в текстовый файл upd_new.txt в Opera. Если просто сохранить как текстовый файл - в нем отсутствуют ссылки на загрузку.

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

      Режим редактирования сообщения вызывается соответствующей кнопкой:
      https://dl.dropboxusercontent.com/u/65733625/Site/WinUpdate-ru-board/edit_msg.PNG
      Затем сохраняем весь текст сообщения в нужный текстовый документ:
      https://dl.dropboxusercontent.com/u/65733625/Site/WinUpdate-ru-board/edit_msg2.PNG

      Браузер значения не имеет.

      P.S. Необходима быть зарегистрированным на ru-board

      Удалить
    2. Благодарю за ответ и за скрипты. Заодно не подскажите, если вручную запустить файл обновления с расширением msu оно установится посредством wusa.exe?

      Удалить
    3. > Заодно не подскажите, если вручную запустить файл обновления с расширением msu оно установится посредством wusa.exe?
      Да. Установка произойдет (или не произойдет, например, если обновление уже было установлено) с помощью стандартной встроенной в Windows утилиты WUSA

      Удалить
  10. GRomR1 скажи пожалуйста в чем дело, при обновлении ссылок для скачивания обновлений выходит не совпадает с актуальными обновлениями что на главной странице и при сравнении самих обновлений особенно последних за июль месяц их просто нет?

    ОтветитьУдалить
    Ответы
    1. Обновил списки до актуальных.

      Для получения последних списков с обновлениями для их загрузки - используйте второй вариант описанный в getUpdate (ручной вариант так сказать).

      Удалить
  11. Можно ли сделать так чтобы было возможно выбрать какие списки обновлений устанавливать?

    ОтветитьУдалить
    Ответы
    1. Скрипт это не предусматривает.
      Но при желании Вы можете оставить в папках обновлений (x86_upd, x64_upd и x86x64_upd) только обновления требуемых списков и запустить скрипт installUpdate.
      В результате произойдет установка только выбранных/оставленных обновлений.

      Удалить
  12. В некоторых случаях сервер не возвращает по запросу размер загружаемого файла, и вы можете в таком случае увидеть надпись: Server size=[0] "==" 0
    У меня бесконечно продолжается Server size=[0] "==" 0. В чем может быть проблема?

    ОтветитьУдалить
    Ответы
    1. Или ждать, или перезапустить скрипт, или скачать данный файл вручную и поместить его в нужную папку.
      А проблема в том, что иногда файловый сервер почему-то не возвращает размер скачиваемого файла по запросу cURL и тогда докачан ли файл не представляется возможным. Поэтому запускается цикл до тех пор, пока сервер не возвратит в своем Response размер файла, который чисто теоретически может быть и бесконечным.

      Удалить
  13. А зачем он нужен,если и так все ставится и обновляется.

    ОтветитьУдалить
    Ответы
    1. Под "он" подразумевается данный скрипт установки обновлений?
      По идее все выше описано, но если неясно могу и вкратце повторить.
      Нужен он в первую очередь для установки обновлений вручную, там где нет возможности (нет интернета, медленный/дорогой интернет) скачать и установить в автоматическом режиме.

      Удалить
  14. Большое спасибо! Очень нужная вещь.

    ОтветитьУдалить
  15. Целый день пытаюсь скачать обновления, но после скачки 30-ки старых(2011-2012гг) файлов переходит в режим цикла - Server size=[0] "==" 0. Сто раз перезапускал и каждый раз одно и тоже, скачивает одно и тоже количество старых файлов обновления и входит в режим цикла. В чём может быть дело? Спасибо!

    ОтветитьУдалить
    Ответы
    1. Используйте ручной режим (вариант 2), просто одно из обновлений удалено с сайта MS и заменено новой версией.

      Удалить
  16. Будьте добры, выложите хеш-сумму архива.

    ОтветитьУдалить
    Ответы
    1. > WinUpdate_ru-board.com_v1.5.7z:
      CRC32: C2133573
      MD5: 2B1CB608211389570685BA57B6BDB590
      SHA-1: 3C0B2BBE073B86BF6D50E87A04C0266BB326C6D0

      Удалить
  17. Сгенерированый скрипт установки installUpdate.cmd відает несколько ошибок виду
    [1/184] ndp451-kb2858728-x86-x64-allos-enu.exe
    Invalid switch - "/q".

    Причина - START "хочет" параметр Title. Details: http://stackoverflow.com/questions/154075/using-the-dos-start-command-with-parameters-passed-to-the-started-program
    Решение:
    Заменить
    start /wait ...
    на
    start "Win update script" /wait ...

    ОтветитьУдалить
    Ответы
    1. Спасибо за комментарий, исправлю в ближайшее время.

      Удалить
  18. Ссылка https://dl.dropbox.com/u/65733625/Soft/WinUpdate_ru-board.com_v1.5.7z не работает. Прошу передать мне файл через эту форму : www.dropitto.me/Maks . Пароль : upload

    ОтветитьУдалить
  19. список обновлений берете с рубоарда?

    ОтветитьУдалить
  20. Ссылки на скачивание в статье не работают. Где можно скачать скрипты?

    ОтветитьУдалить
    Ответы
    1. Извиняюсь, на руборде 2-я сработала.

      Удалить
  21. Не могу зарегистрироваться

    ОтветитьУдалить
  22. Здраствуйте). Я просил у Вас изменить installUpdateCreateCmd, чтобы формировал порядок установки обновлений по дате их выхода, но раз это невозможно, сгодится вариант (по дате их изменения). Небольшое уточнение, при запуске getUpdate, скрипт закачивает обновления последовательно по нумерациии, а вот дата изменения обновлений получается не последовательная (видимо тут особая внутрення логика скрипта), в отличии от менеджера закачек (Download Master) ктр закачивает все обновы последовательно и соответсвенно дата их изменений по нумерации, такая же как в списке TAILORD. Если у Вас будет свободное время, пожалуйста удовлетворите мою просьбу)

    ОтветитьУдалить
    Ответы
    1. В общем сделал такое. Изменил getUpdate. При загрузке обновления к загружаемому файлу добавляется его порядковый номер. Номер в соответствии со списков в генерируемом файле upd_download_links.txt.
      Остальные файлы без изменений. И т.к. installUpdateCreateCmd формирует список по алфавиту, то это должно сработать. Но я тестировал, поручаю это Вам, отпишитесь о результатах.
      Перед запуском очистить папки x86_upd, x64_upd, x86x64_upd

      Скачать:
      https://dl.dropboxusercontent.com/u/65733625/Soft/WinUpdate_ru-board.com/ForKahas%5BAdd_Number_Of_Position_Update%5D/getUpdate.exe

      Удалить
    2. При запуске getUpdate выскакивает ошибка: "Запуск программы невозможен, так как на компьютере отсутствует MSVCP100.dll. Попробуйте переустановить программу."
      При том что из архива ничего не удалялось, так, что тест был неудачен)

      Удалить
    3. А точно запускаете новый getUpdate из нужного каталога, рядом со всеми необходимыми файлами?
      Т.е. заменили старый getUpdate новым.
      https://dl.dropboxusercontent.com/u/65733625/Site/WinUpdate-ru-board/WinUpdate_ru-board.com_v1.5.7z

      Удалить
    4. Да, именно так и делаю, заменяю старый новым, и снова та же ошибка. С оригинальным getUpdate, работает отлично.

      Удалить
    5. Хм, видимо я не так собрал новое приложение. Попробую чуть позже по-другому

      Удалить
    6. Итак, протестировал программу на другом ноуте (без последних обновлений). Работает отлично (правда смутило что нумерация идёт с 0, а не 1, но это придирки). Но возник другой вопрос). А так ли нужна отдельная закачка для обновлений, которые идут и для 32- и для 64-разрядной ОС? Их ведь совсем немного, и не надо будет редактировать upd_download_links.txt, чтобы вписать туда эти несколько обнов? Но опять таки это уже придирки, а в целом я благодарен вам за вашу работу и отличную программу)

      Удалить
    7. > А так ли нужна отдельная закачка для обновлений, которые идут и для 32- и для 64-разрядной ОС?
      Их можно отдельно скачать.
      И установить, тоже можно отдельно, например, перед всеми обновлениями.

      Удалить
    8. Перекачайте программу, я по другому собрал ее. Теперь должна работать как предыдущая везде.

      Скачать:
      https://dl.dropboxusercontent.com/u/65733625/Soft/WinUpdate_ru-board.com/ForKahas%5BAdd_Number_Of_Position_Update%5D/getUpdate.exe

      Удалить
    9. Спасибо большое, эта версия действительно работает везде)

      Удалить
  23. Обе ссылки на WinUpdate_ru-board.com_1.5 умерли :(

    ОтветитьУдалить
  24. Доброго времени суток, подскажите пожалуйста. Обновил Виндовс, скачал обновления ( в ручную) получилось около 150. Запускаю installUpdate и на 6 замирает.... Оставил около 8-и часов - изменений 0. Что делать?
    А на другом компьютере, все проходит, компьютер перезагружается но изменений 0, зайдя в журнал установленных обновлений, почти везде пишет " Отказ ". Что в этом случае делать?
    Заранее спасибо за ответ ( Сергей)

    ОтветитьУдалить
    Ответы
    1. Доброго времени.
      Возможно, UAC препятствует установке.

      Удалить
  25. В крайнем списке TAILORD пяток ссылок опубликовал как https:// и getUpdate их проигнорировал. Пришлось ручками править в списке на http://
    Оба варианта ссылок рабочие. Надо бы поправить getUpdate.

    ОтветитьУдалить
  26. Есть подозрение почему обновления устанавливаются так долго.
    Происходит следующее: сперва установка идет достаточно быстро, но потом начинает замедляться, чем дальше тем больше, причина похоже в том, что забивается вся оперативная память, а затем естественно начинается работа со свопом винчестера, что и затормаживает процесс до черепашьих скоростей.
    На компе стоит 16 гиг оперативки, они забились примерно на половине списка. По какой то причине установщик не освобождает память после установки очередного обновления.
    Как вариант, делить все апдейты на несколько частей и по очереди загружать их в папку x64_upd. На сколько частей - определять опытным путем наблюдая за расходом памяти в диспетчере задач.

    ОтветитьУдалить
    Ответы
    1. Да проблема с долгой установкой большого количества обновлений и правда имеет место.
      Пока что реального решения не видел, в основном предлагают во время установки на середине списка остановиться и перезагрузить систему, и после перезагрузки продолжить с места остановки.
      Интересно, что если устанавливать с помощью мастера обычным образом (загружая их из инета) обновления обычно ставятся быстрее.
      Я же предпочитаю интегрировать обновления в образ и устанавливать систему уже с обновлениями.
      Установка проходит так же быстро как и без обновлений.

      Удалить
  27. Добр день, при выборе 2 списка WIN 8 качается и 3 список.
    Глянул исходник....а там строчка повторяется :(

    make_pair( "Список 1", "Список 2" ),
    make_pair( "Список 2", "Дополнительно:" ),
    make_pair( "Список 3", "Дополнительно:" )

    ОтветитьУдалить
  28. В списке от TAILORD есть ссылки с https. Скрипт их не обрабатывает. Почему?

    ОтветитьУдалить
    Ответы
    1. Ага, подтверждаю. Приходится делать вручную. Правки будут?

      Удалить
    2. Готовы протестировать измененный вариант?

      Удалить
  29. deleteUpdate для windows 8 качает мартовские списки изменений :(

    ОтветитьУдалить
  30. Не загружаются обновления, если доступ к интернету через прокси.

    ОтветитьУдалить
  31. Хотелось бы узнать подробнее как именно сохранять upd_new.txt в режиме редактирования. (на пример в firefox)
    1) просто сохранить всю страницу через верхнее меню: файл > сохранить как, и указать при сохранении тип файла: текстовые файлы.
    Или
    2) выделить в режиме редактирования текст, который находиться в окне сообщения. И вставить его в текстовый редактор и сохранить.
    Просьба к автору, выложить сохраненный upd_new.txt в архиве на какой нибудь бесплатный и не глючный файлообменник, чтобы можно было посмотреть правильный формат файла.
    Заранее благодарен.

    ОтветитьУдалить
    Ответы
    1. 2
      Пример upd_new.txt для текущей версии обновлений(Win7)
      http://pastebin.com/z9CRS90E
      Старый список:
      https://dl.dropboxusercontent.com/u/65733625/Soft/upd7.txt



      Удалить
  32. При создании 1-го списка (с помощью upd_new.txt) находиться и качается только 175 файлов вместо 213.
    Почему?

    ОтветитьУдалить
    Ответы
    1. Скорее всего все по той же причине, что и ранее:
      "В крайнем списке TAILORD пяток ссылок опубликовал как https:// и getUpdate их проигнорировал. Пришлось ручками править в списке на http://
      Оба варианта ссылок рабочие. Надо бы поправить getUpdate."

      Исходники программы открыты, в принципе, можете править сколько угодно.

      Удалить
    2. Один из примеров upd_new.txt сброшенных Вами оказался в кодировке UTF-8, а ваша программа ее не понимает. Почему бы не упомянуть об это в описании.

      Удалить
  33. Вопрос к Вам как к автору.
    1. Почему Вы не обновляете ссылку https://dl.dropboxusercontent.com/u/65733625/Soft/upd7.txt из которой берёте совершенно дремучий список обновлений?
    2. Почему не брать список обновлений встроенный в программу непосредственно от сюда http://forum.ru-board.com/postings.cgi?action=edit&forum=62&topic=24100&postno=7.
    3. Почему при запуске getupdate пишет, что загружены последние обновления из файла upd_new.txt а реальный список upd_download_links.txt всё равно формируется из файла upd7.txt который скачивается из интернета.

    ОтветитьУдалить
    Ответы
    1. Спасибо за вопрос.
      Ответ в общем-то простой - нет времени этим заниматься.
      Наверно пора сворачивать данный проект. Так как в данный момент в нем больше глюков, чем пользы, а особого смысла и нужды дорабатывать его не вижу.

      Удалить
  34. Спасибо за ваш пакет скриптов, использую его для установки обновлений, генерируемые им скрипты установки самые толковые, это здорово помогает.
    Можно ли решить такую задачу?
    Скачаны обновления для последующей пакетной offline установки в Windows 8.1 или интеграции в образ.
    Имеется пользовательский обновляемый вручную список вредных и нежелательных обновлений.
    Требуется скрипт, который бы в offline по номерам KB вычислял обновления, попадающие в этот список, выводил их перечень и предлагал пользователю удалить их дистрибутивы из папки (они еще не установлены).
    Пробовал подсунуть deleteUpdate пользовательский список x64_del_upd.txt, но он его игнорирует и скачивает из сети.
    Можно ли приручить deleteUpdate для работы в offline?

    ОтветитьУдалить
    Ответы
    1. Пожалуйста!
      Я бы deleteUpdate не пользовался, она к спискам в интернете привязана, а там не всегда актуальная информация содержится.

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

      Задача довольно простая, но я так сходу ее не решу. Советую попросить помощи у знающих людей, например, тут:
      http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=33080#1

      Удалить
  35. Проверьте, правильно ли работает "installUpdateCreateCmd", точнее, устанавливаются ли обновления при помощи файла "installUpdate.cmd", который она создает.
    Дело в том что в файле "installUpdate.cmd" возможно, неверно указаны пути до установочных файлов обновлений. Если открыть содержимое файла installUpdate.cmd с помощью текстового редактора, то видно, что программа добавляет "%" после "%~dp0":
    start /wait wusa.exe "%~dp0%x86_upd\windows6.1-kb2479943-x86.msu" /quiet /norestart
    а должно быть так:
    start /wait wusa.exe "%~dp0x86_upd\windows6.1-kb2479943-x86.msu" /quiet /norestart
    иначе обновления не устанавливаются, несмотря на то что все сообщения "echo" появляются в командной строке.
    Не знаю может это у меня так, но я вручную редактировал созданный installUpdate.cmd с помощью текстового редактора, убирая "%" перед "x86_upd" в строчках, типа: start /wait wusa.exe "%~dp0%x86_upd\windows6.1-kb2479943-x86.msu" /quiet /norestart
    Иначе обновления не устанавливаются! Сведения об установленных обновлениях можно посмотреть в "Просмотр журнала обновлений Windwows", центра обновления windows.

    ОтветитьУдалить