Ці варты winget увагі?
Арцём Мікуліч | АБАЖУРЫДнямі я дабраўся да winget – дыспетчару пакетаў з адкрытым зыходным кодам, распрацаванага Microsoft для Windows 10 і Windows 11. Пра яго шмат гаварылі падчас канферэнцыі Build і пасля яе, таму варта было паспрабаваць.
Інтэрфейс winget – гэта набор інструкцый для каманднага радка для кіравання праграмамі. Напрыклад, winget list
пакажа спіс праграм, усталяваных на машыне, іх бягучую і апошнюю версіі (гл. малюнак ніжэй).
Варта звярнуць увагу на слупок Source – калі там ёсць слова winget, то праграму можна абнавіць камандай winget upgrade
. На малюнку бачна, што ўжо ёсць навейшыя версіі Visual Studio 2022, пакету Build Tools 2019 (пазначана зялёным), а таксама Docker Desktop.
Калі winget адсутнічае ў слупку Source, то абнавіць праграму не атрымаецца. То бок DownloadMaster (выдзелены жоўтым) не спрацуе. Але спіс праграм, з якімі працуе winget, пашыраецца штодзённа.
Больш за ўсё мяне цікавіла, ці дапаможа winget разгарнуць маё працоўнае асяроддзе на новай машыне. Бо я з тых, хто да апошняга адкладае пераўсталёўку Windows у тым ліку з-за таго, што “там шмат чаго стаіць” і шкада часу на старт з нуля. Таму я пачаў эксперыменты з камандамі winget export
і winget import
.
З дапамогай экспарту вы можаце атрымаць JSON файл са спісам софту і яго версіямі.
winget export -o c://winget-config.json [--include-versions]
Ніжэй прыклад файла.
{ "$schema" : "https://aka.ms/winget-packages.schema.2.0.json", "CreationDate" : "2023-07-02T09:50:28.062-00:00", "Sources" : [ { "Packages" : [ { "PackageIdentifier" : "Docker.DockerDesktop", "Version" : "4.3.1" }, { "PackageIdentifier" : "Python.Python.3.10", "Version" : "3.10.0" }, { "PackageIdentifier" : "OpenJS.NodeJS.LTS", "Version" : "16.13.0" } ], ... }
Як вы ўжо маглі здагадацца, мы можам усталяваць увесь экспартаваны софт на новай машыне адной камандай.
winget import c://winget-config.json [--ignore-versions]
Сапраўды можна ісці піць гарбату.
Патлумачу, як працуе параметр --ignore-versions
. Пры яго наяўнасці паставяцца апошнія магчымыя версіі праграм, а версіі з JSON файла будуць праігнараваныя. Цягам эксперыменту я зразумеў, што гэта не заўсёды зручна: для адных праграм версія не мае прынцыповага значэння (Zoom, Slack, Skype, Chrome і г.д.), а для іншых наадварот (напрыклад, node.js ці python). Я вырашыў праблему, падрэдагаваўшы сам JSON файл. На малюнку ніжэй бачна, што я выдаліў поле Version для Zoom, а для NodeJS, наадварот, пакінуў як ёсць.
Акрамя персанальнага карыстання, я таксама паспрабаваў winget як частку onboarding працэдуры для новых распрацоўшчыкаў. Замест таго, каб пералічваць увесь софт і дадаваць спасылкі у дакументацыю, зараз дастаткова падтрымліваць просты json файл (вось прыклад з майго персанальнага github). Таксама гэта дапамагае фіксаваць версіі софту ў камандзе і пазбягаць несумяшчальнасцяў.
Адзначу, што менеджары пакетаў не рэвалюцыя – яны існуюць больш за дзесяць гадоў (напрыклад, Chocolatey). Тым не менш, winget паказаў сябе вельмі зручным інструментам для Windows, якога доўгі час не ставала.