Есть нормальные системы, где в пару команд можно обновить как саму ОС, так и весь основной софт. А есть винда, у которой иногда обновления не ставятся без VPN, а Microsoft Store истерит что “продажи в вашей стране прекращены”. Мне помогло более-менее упростить обновления две утилиты

  • winget - умеет ставить/обновлять/удалять ПО и, если нужно, скачивать инсталяшки
  • gup - умеет массово обновлять golang-приложения поставленные через go install Был ещё chocolately, но он как-то плохо работал

Ну и не забываем что в wt/powershell можно через F2/F8 обращаться к истории команд.

WinGet

https://learn.microsoft.com/ru-ru/windows/package-manager/winget/

# Показать всё что ждёт обновления, нас интересует Id и версия Available
> winget update

# Скачать сетап по id приложения
> winget download --id Docker.DockerDesktop

# Обновить по id
> winget update --id Docker.DockerDesktop

# Обновить всё кроме JetBrains и JDK
> Get-WinGetPackage | Where-Object IsUpdateAvailable | Select-Object -ExpandProperty Id | rg -v 'JetBrains|JDK' | ForEach-Object { winget update --id $_ }

Почему без JetBrains - Продукты JB как-то криво хранят версии и ставятся каждый раз в разные директории. Поэтому winget может показывать старую версию даже если через обновления поставлена распоследняя. Начинает сопоставлять корректно версию только при полной установке из инсталла (т.е. скачать и руками поставить). Почему без JDK - какая-то софтина (я грешу на софт от налоговой или ФСЗН которых давно нет) поставила какую-то свою версию JDK, а MSI для обновления/удаления не поставила. И корректно снести эту версию JDK я больше не могу штатными средствами Windows.

gup

https://github.com/nao1215/gup

Тут всё предельно просто

# Обновить все утилиты установленные в $GOPATH/bin
> gup update