Existe-t-il un moyen de répertorier les packages Chocolatey avec leur répertoire d'installation?

56

La commande

choco list -lo

liste les paquets installés. Mais comment puis-je déterminer l'emplacement d'installation d'une application Chocolatey? Jusqu'à présent, j'ai dû les chasser.

Quelques exemples:

  • NUnit va à Program Files (x86)
  • WGET va à %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ est allé à %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Y at-il un drapeau sur choco listqui va me dire où ils sont allés? ChocolateyGUI ne semble pas le faire non plus.

Un peu comme Debian:

dpkg-query

Ou RedHat's:

rpm -ql [package-name]

Ou la repoquerie de YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
antwarpes
la source

Réponses:

26

Actuellement, il n'y a aucun moyen de faire ce que vous demandez.

Chaque paquet Chocolatey est unique en ce sens qu'il peut s'agir d'un wrapper autour d'un MSI ou d'un EXE, ou bien d'une simple extraction d'une archive compressée vers un emplacement connu, à savoir C: \ tools, ou d'un module PowerShell extraits à PSModulePath, ou cela pourrait être quelque chose de complètement personnalisé.

Il s’agit d’un effet secondaire de l’écosystème Windows, où il existe de nombreuses façons de faire la même chose. Chocolatey essaie de mettre de l'ordre dans tout cela en fournissant un mécanisme pour trouver au moins tous les paquets que vous voulez au même endroit, mais il n'y a que tant de choses à faire avec Chocolatey.

Si vous envisagez les choses différemment, il est possible de transmettre les arguments d'installation à un package Chocolatey à l'aide de ce qui suit:

https://github.com/chocolatey/chocolatey/wiki/CommandsInstall#installarguments-optional---v09813

Cela pourrait, en théorie, modifier les arguments d'installation d'un package Chocolatey basé sur MSI ou EXE pour modifier l'emplacement d'installation des fichiers. Vous pouvez voir un exemple d'utilisation de cette approche ici:

http://chocolatey.org/packages/VisualStudio2013Ultimate

Cependant, cette approche est limitée. Tout le monde ne prend pas le temps, comme Matt, de mentionner les arguments d’installation possibles. C’est un processus assez compliqué d’extraire les arguments d’installation qu’il est possible d’envoyer dans un fichier MSI ou EXE.

En ce qui concerne ChocolateyGUI, et en tant que mainteneur actuel de ce produit, je peux vous dire que cela ne fait rien d’intelligent dans ce domaine :-). Il s’agit simplement d’une enveloppe autour des outils de ligne de commande fournis par Chocolatey et vise à faciliter la tâche des personnes qui n’aiment pas utiliser la ligne de commande.

Gary Ewan Park
la source
2
Chocolatey a une solution car Chocolatey génère un fichier shim pour le package qui conserve le chemin d'accès à l'exécutable et expose la cible s'il est appelé avec --shimgen-noopswitch, voir ma réponse
maoizm
8
Près de 3 ans plus tard, c'est toujours ce que je trouve le plus frustrant à propos de choco: "installé quelque chose. Maintenant ... où est-il?"
Ben Collins
@BenCollins Je suppose que vous avez également mis à jour Chocolatey récemment? Il indique maintenant où il installe des objets - et cela depuis presque un an maintenant (depuis la 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
1
"Logiciel installé sur '$ toolsDir'" Merci, Chocolatey.
Blueben
1
Peut-être stocker le journal d'installation dans un répertoire Chocolatey et donner aux utilisateurs la possibilité de le récupérer par nom de paquet ...
Marcello Romani
4

Si Chocolatey génère une cale pour le package, yourprogram.exevous pouvez par exemple indiquer le chemin d'accès au fichier exécutable à l'aide de la ligne suivante Powershell:

(yourprogram --shimgen-noop | sls "path to executable:" ) -split "path to executable:" | % {$_.Trim() }

Cela ne fonctionne que si shim est un fichier .exe. Ceci est très courant, bien que certains paquets génèrent des fichiers .ps1, .cmd ou même .bat. Dans ces rares cas, cette recette ne fonctionnera pas.

maoïsme
la source
4

Malheureusement, pas que je sache. Je crois que le répertoire d'installation est déterminé par le paquet lui-même. Ce n'est pas défini dans le fichier .nuspec et je ne vois nulle part qu'il soit explicitement défini dans le code source de Chocolatey.

Code source: https://github.com/chocolatey/chocolatey

tbenz9
la source
C'est correct. Si vous examinez la documentation pour créer un package, vous verrez que pour la plupart des packages, le programme d'installation MSI créé par le créateur de logiciel d'origine définit le chemin d'installation. Chocolatey n'a aucune idée de l'endroit où le MSI place les fichiers.
Ciel lourd
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Si c'était un MSI, alors vous pourriez généralement passer -ia:

INSTALLDIR=""E:\SomeDirectory\npp""

 

encore
la source