Utilisation d’une liste d’installation pour Chocolatey
I. Présentation
Dans cet article je vous donne une petite astuce pour faciliter le déploiement et l'installation de plusieurs package via la solution Chocolatey sous Windows. Pour rappel, Chocolatey est une solution de déploiement et gestion rapide des logiciels sous Windows , une présentation plus détaillée est faite dans cet article : Chocolatey : Installer des logiciels en ligne de commande.
J'utilise ce mécanisme pour redéployer facilement un poste de travail (hors domaine) et disposer rapidement d'outils de travail, il m'est donc nécessaire d'avoir une liste préconçue et facilement modifiable.
➡ Découvrez également l'alternative WinGet
II. Utilisation d'une liste JSON
Cette solution utilise simplement une liste sous forme JSON qui contient le noms des paquets à installer, ainsi qu'un script Powershell (.ps1) en charge de traiter cette liste. Voici à quoi ressemble le fichier que je nomme packages.json :
{ "packages": [ {"name": "xmind"}, {"name": "notepadplusplus"}, {"name": "conemu"}, {"name": "golang"}, {"name": "adobereader"}, {"name": "keepass"}, {"name": "veracrypt"}, {"name": "zim"}, {"name": "virtualbox"}, {"name": "libreoffice"}, {"name": "zim"}, {"name": "sublimetext3"}, {"name": "eraser"} ] }
Ensuite, un script Powershell (ps1) que je nomme install.ps1 contient simplement les lignes nécessaire à la récupération de ce fichier JSON et pour chaque paquet, exécute la ligne de commande d'installation Chocolatey :
# Récupérer la liste JSON dans le fichier packages.json $p = Get-Content -Raw -Path '.\packages.json' |ConvertFrom-Json # Installation de chaque application foreach ($package in $p.packages.name) {choco install $package -y --force --ignore-checksums}
Lors de l'exécution, il faut que les deux fichiers soient dans le même répertoire. On pourrait également imaginer devoir passer en paramètre du script install.ps1 le nom du fichier JSON (au cas ou plusieurs seraient à notre disposition :
$myargs = @{ json = "package.json" } Get-ChildItem @myargs $p = Get-Content -Raw -Path $json |ConvertFrom-Json # Installation de chaque application foreach ($package in $p.packages.name) {choco install $package -y --force --ignore-checksums}
L'utilisation serait alors la suivante :
./install.ps1 -json package_utilisateur.json
J'espère que cette petite astuce vous sera utile 🙂
Bonjour,
Super article, très clair et efficace. Par contre je doute sur son utilité, mais je loupe surement quelque chose.
Sinon une simple ligne de commande ave toutes les applis à installer me semble plus « simple » et moins fastidieux.
On a le meme resultat juste avec cette ligne de commande basic:
choco install googlechrome skype 7zip vlc filezilla adobereader xmind notepadplusplus conemu golang adobereader keepass veracrypt zim virtualbox libreoffice zim sublimetext3 erase -y -f
Non ?
Super article juste dans le boc JSON il manque le crochet fermant à la fin 😉
Hello Laurent,
Bien vu je vais corriger 😉
A+