Depuis quelques mois, Microsoft a finalisé le travail sur son gestionnaire de paquets winget qui est disponible en version 1.0 pour Windows 10 et sera nativement intégré à Windows 11. Un outil idéal pour installer simplement des applications, les mettre à jour et préparer une machine neuve.
Les adeptes de Linux le savent depuis longtemps : la ligne de commandes est un outil très efficace, plus efficace qu'une interface graphique pour certaines tâches. Pour installer VLC, il est en effet très simple de taper :
sudo apt install vlc
Bien plus que d'aller sur le site de VLC, chercher le bouton de téléchargement, récupérer le fichier, vérifier qu'il est conforme, l'installer puis faire le ménage. Pour automatiser de telles tâches, les OS mobiles et Windows proposent un « Store », qui a le plus souvent le défaut d'être assez peu ouvert, modèle économique des plateformes oblige.
Ce, alors que les gestionnaires de paquets des distributions Linux proposent des dépôts officiels tout en permettant à l'utilisateur d'ajouter des dépôts tiers auxquels il fait confiance pour accéder à d'autres outils s'il le souhaite. Ubuntu a même simplifié le processus à l'extrême avec ses Personal Package Archives (PPA).
Enfin un gestionnaire de paquets dans Windows !
Une approche que Microsoft a fini par adopter avec winget. L'éditeur a longtemps cherché à proposer un gestionnaire de paquets. Il en a d'ailleurs un pour PowerShell ou les modules NuGet destinés aux développeurs, mais n'avait jamais réussi à trouver une approche gagnante pour les applications grand public de son système.
Au point que des solutions tierces se sont développées, chez les particuliers comme les entreprises. Chocolatey en est l'exemple parfait, étant devenu le gestionnaire de paquets officieux de Windows. Mais désormais, il y a winget. Développé depuis l'année dernière il est disponible en version 1.0 depuis fin mai.
On peut donc l'utiliser de manière courante sous Windows 10, il sera partie intégrante de Windows 11. L'occasion pour nous de voir comment l'utiliser pour préparer un système neuf ou le mettre à jour.
winget : les commandes basiques
Tout n'a pas été simple pour winget, qui a connu des débuts difficile. L'outil ne permettait au départ que d'installer des applications et ses fonctionnalités étaient très limitées. Son ambitieuse feuille de route a largement été malmenée et le projet a presque pris plusieurs mois de retard sur les plans initiaux.
Au final, la version 0.4 a été renommée en 1.0 pour tenir le délai officiel. Les principales fonctionnalités étaient de toute façon intégrées, comme la mise à jour, l'import/export, les sources multiples, etc. L'outil continuera de se peaufiner avec le temps, même si aucune mise à jour n'a été diffusée depuis fin juin. On s'attend néanmoins à ce qu'une nouvelle mouture accompagne le lancement de Windows 11 le 5 octobre ou soit publiée peu après.
Pour rappel, winget est un gestionnaire de paquets permettant d'installer des applications référencées dans une base communautaire gérée depuis GitHub. Elle contient des manifestes détaillant le nom des applications, des liens de téléchargement, empreinte de vérification des fichiers, etc. Chacun peut participer.
Pour l'utiliser, il suffit de télécharger la dernière version en date, au format MSIX Bundle. La compatibilité est assurée à partir de la version 1809 (build 17763). Sous Windows 11, winget est présent dès la première mise à jour des applications du Microsoft Store. Lorsque c'est fait, ouvrez un terminal :
winget -v
La version devrait s'afficher. Vous pouvez ensuite mettre à jour les sources, chercher une application et l'installer :
winget source update
winget search vlc
winget install vlc
Installer plusieurs applications via winget : notre script
Malheureusement, il n'est pas possible d'effectuer la commande suivante :
winget install discord vlc
Installer deux applications via winget nécessite pour le moment deux commandes séparées. En attendant que cela change, nous avons développé un script PowerShell pour vous faciliter la vie :
curl.exe -LO https://gist.github.com/davlgd/29693f3d725e7834ad5e76a2f1cf922b/raw/45139c8fa623c6fd83a5e92d7aabe681cb300bba/WinGetMulti.ps1
.\WinGetMulti.ps1 zip vlc
Il doit être lancé via le terminal propre à PowerShell, qui est utilisé par défaut avec le nouveau Terminal de Microsoft. Il contient une variable $bootstrapArray
contenant une liste d'application à installer avec le flag --bootstrap
, que vous pouvez modifier selon vos besoins. Sinon précisez les applications en argument.
Par défaut, le système devrait afficher une erreur, le script téléchargé n'étant pas considéré comme de confiance. Pour changer cela, vous devez changer la stratégie d'exécution (avec les droits administrateur) :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
L'import/export de winget
Autre possibilité : se reposer sur la mécanique d'import/export intégrée à winget. En effet, il est possible de créer un fichier JSON contenant la liste des applications installées sur votre système, puis de la réutiliser sur une autre machine pour y installer les mêmes applications. C'est plus contraignant et moins flexible, mais ça existe.
Pour exporter la liste des applications installées :
winget export -o liste-winget.json
Vous pouvez également préciser des versions :
winget export -o liste-winget.json --include-versions
Pour l'import, c'est également assez simple :
winget import -i liste-winget.json
Cette fois on peut ignorer les versions si elles sont précisées ou les paquets éventuellement indisponibles :
winget import -i liste-winget.json --ignore-versions
winget import -i liste-winget.json --ignore-unavailable
Notez que la composition de ce fichier est assez simple, il peut donc être modifié manuellement. Il suffit simplement de connaître le nom exact des paquets à ajouter (colonne ID dans winget search
) :
{
"$schema" : "https://aka.ms/winget-packages.schema.2.0.json",
"CreationDate" : "2021-05-05T13:37:42.000-00:00",
"Sources" :
[
{
"Packages" :
[
{ "PackageIdentifier" : "Balena.Etcher" },
{ "PackageIdentifier" : "GIMP.GIMP" },
{ "PackageIdentifier" : "GnuPG.GnuPG" },
{ "PackageIdentifier" : "Mozilla.Firefox" },
{ "PackageIdentifier" : "Mozilla.Thunderbird" },
{ "PackageIdentifier" : "VideoLAN.VLC" },
{ "PackageIdentifier" : "XnSoft.XnViewClassic" },
{ "PackageIdentifier" : "WinSCP.WinSCP" },
],
"SourceDetails" :
{
"Argument" : "https://winget.azureedge.net/cache",
"Identifier" : "Microsoft.Winget.Source_8wekyb3d8bbwe",
"Name" : "winget",
"Type" : "Microsoft.PreIndexed.Package"
}
}
],
"WinGetVersion" : "1.0.11692"
}
Des outils en ligne comme Winstall permettent de générer facilement des JSON d'import.
Mettre à jour vos applications
Depuis sa version 0.4/1.0, winget permet la mise à jour d'une application ou de toutes celles installées :
winget upgrade vlc
winget upgrade --all
Nous avons parfois rencontré des soucis avec cette fonctionnalité, certaines applications détectant constamment une nouvelle version. Un cas que les éditeurs devront régler pour assurer leur compatibilité avec winget.
Modifier les paramètres de winget
Il est aussi possible de gérer certains paramètres et d'activer des fonctionnalités expérimentales :
winget settings
Cela ouvre un fichier JSON dont la composition est détaillée par ici. On peut ainsi remplacer la barre de progression bleue par les couleurs de l'arc-en-ciel, désactiver la télémétrie, modifier l'outil de téléchargemet, activer le Microsoft Store comme source ou la gestion des dépendances. Ces deux dernières sont encore au stade expérimental.