Ці варты winget увагі?

Ці варты winget увагі?

Арцём Мікуліч | АБАЖУРЫ

Днямі я дабраўся да winget – дыспетчару пакетаў з адкрытым зыходным кодам, распрацаванага Microsoft для Windows 10 і Windows 11. Пра яго шмат гаварылі падчас канферэнцыі Build і пасля яе, таму варта было паспрабаваць.

Інтэрфейс winget – гэта набор інструкцый для каманднага радка для кіравання праграмамі. Напрыклад, winget list пакажа спіс праграм, усталяваных на машыне, іх бягучую і апошнюю версіі (гл. малюнак ніжэй).

Вынікі 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, якога доўгі час не ставала.

Report Page