Как программно проверить наличие обновлений установленных программ с помощью winget?
Я потратил невероятное количество времени, пытаясь использовать .
Если я просто бегу или
Поскольку собственно обновление программ через
Но если я это сделаю
Однако есть функция под названием «экспорт», которая якобы делает именно то, что я хочу: выводит файл JSON с названиями программ и... без версий. Однако у него есть секретный флаг под названием
winget export -o "tmp.txt" --include-versions
... включает только текущую установленную версию , а не столбец «доступная версия»! Это делает невозможным использование вывода JSON для определения наличия доступного обновления для той или иной программы!
О чём они думали, когда проектировали эту систему? Что они могут иметь в виду, что я должен сделать, чтобы узнать эту информацию? В конце концов, мне действительно нужно найти способ регулярного выражения вывода текста для человека? Это кажется таким неправильным и таким глупым, особенно когда у них есть буквальная функция «экспорта в JSON», которая позволяет избежать важной информации «доступной версии».
Как всегда: должно быть, я что-то упускаю.
1 ответ
Если только тыwingetглючит или что-то в этом роде (в последних версиях это не для меня)1.4.10173версия):
winget upgradeбез каких-либо переключателей по умолчанию просто перечисляет пакеты, которые можно обновить.
winget upgrade --allэто команда для обновления всего.
Документация также подтверждает такое поведение.
Чтобы определить, какие приложения нуждаются в обновлении, просто используйте обновление без каких-либо аргументов, чтобы отобразить все доступные обновления.
Для одного пакета вы также можете использоватьwinget list "packagename"илиwinget list package.id.
Список всех упомянутых командName,Id,Version,Available,Sourceстолбцы. Данные разделяются разным количеством пробелов, поэтому, если вам придется их использовать, потребуется расширенная пакетная обработка.