Обновление ПО в Windows
Есть нормальные системы, где в пару команд можно обновить как саму ОС, так и весь основной софт. А есть винда, у которой иногда обновления не ставятся без 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