Автоматическое обновление программ Windows 10/11

Некоторые программы не имеют встроеной системы автоматического обновления, но могут выводить сообщения о том, что доступна новая версия. Данные уведомления мне надоели, решено их обновлять автоматически, когда компьютер например не используется, другими средствами. Для этого можно воспользоваться пакетным менеджером встроенным в Windows 10/11 - это Winget.

Также есть другой способ установки и обновления программ, с помощью сторонней программы Chocolatey.

Что необходимо для работы WinGet

Winget встроен с версий Windows 10 21H1 и Windows 11 21H2 и новее.
Чтобы проверить его наличие, достаточно открыть командную строку Windows и ввести, например, команду:

winget -v

В выводе, вы должны получить версию программы, в моём случае это v1.6.3482. Если вы получили версию, то пакетный менеджер у вас уже имеется и можно идти к следуюему шагу. Если нет, то его необходимо установить. Установить можно из Microsoft Store.

Вывод версии winget в консоли

Вывод версии Winget

Написание скрипта

Перед началом опишу несколько моментов. Winget не всегда может обновить программы, если они запущены. Например Hwmonitor у меня без проблем сам закрылся и обновился, а при открытом Notepad++ выполнение завершилось ошибкой, как только закрыл - всё прошло успешно.

Создадим файл с помощью любого текстового редактора с названием auto_update и расширением .bat. Я сохраню его на диск D в папку “Scripts” (D:\scripts), этот путь нам понадобиться позже в планировщике задач Windows. Вы также можете сохранить в любом другом месте.

winget запуск из bat файла

Для обновления можно указывать как имя пакета, так и идентификатор, я буду использовать идентификатор - он уникален. Чтобы найти идентификатор, например для VLC, достаточно написать в консоли winget search vlc. Внутри созданного файла “auto_update.bat” указываем следующее:

winget upgrade Notepad++.Notepad++ CPUID.HWMonitor

Создание задания в планировщике

Заходим в “Планировщик заданий” для этого, нажимаем win + r, вводим taskschd.msc и нам откроется планировщик. Создаём простую задачу:
- Имя - рекомендую указывать отражающую суть данного задания
- Триггер - я выбрал ежедневно, т.е. задача будет срабатывать каждый день
- Далее можно будет указать дату и время, начала, работы данной задачи, и указать повтор
- Действие - выбираем “запустить программу”
- Нам предложит указать путь до файла, нажимаем обзор и выбираем ранее созданный файл “auto_update.bat”

Указываем путь до скрипта с Winget

В конце нажимаем готово, наше задание создано. Теперь наш скрипт с вызовом winget и обновлением будет запускаться по расписанию и обновлять указанные пакеты.

Возможные проблемы

Я столкнулся с тем что не находит VLC media player по ИД - VideoLAN.VLC при выполнении команды обновления из батника. При этом если в консоли прописать:

winget search VideoLAN.VLC

То пакет находит, но при этом если также из консоли ввести команду обновления, то также не находит установленный пакет:

winget не найдены установленные пакеты

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