Gibt es eine Möglichkeit, Chocolatey-Pakete mit ihrem Installationsverzeichnis aufzulisten?

56

Der Befehl

choco list -lo

listet die installierten Pakete auf. Aber wie bestimme ich, wo eine Chocolatey-Anwendung installiert wird? Bisher musste ich nach ihnen suchen.

Einige Beispiele:

  • NUnit geht an Program Files (x86)
  • WGET geht an %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ ging zu %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Gibt es eine Flagge choco list, die mir sagt, wohin sie gegangen sind? ChocolateyGUI scheint dies auch nicht zu tun.

So ähnlich wie Debian:

dpkg-query

Oder RedHat's:

rpm -ql [package-name]

Oder YUMs Repoquery:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
Warpen
quelle

Antworten:

26

Derzeit gibt es keine Möglichkeit, das zu tun, wonach Sie fragen.

Jedes Chocolatey-Paket ist insofern einzigartig, als es ein Wrapper um eine MSI oder eine EXE-Datei sein kann, oder es kann ein einfaches Extrahieren eines komprimierten Archivs an einen bekannten Speicherort, z. B. C: \ tools, oder ein PowerShell-Modul sein, bei dem es sich um ein solches handelt in PSModulePath extrahiert, oder es könnte etwas völlig Benutzerdefiniertes sein.

Dies ist ein Nebeneffekt des Windows-Ökosystems, bei dem es mehrere Möglichkeiten gibt, dasselbe zu tun. Chocolatey versucht, dies in Ordnung zu bringen, indem es einen Mechanismus bereitstellt, mit dem mindestens alle gewünschten Pakete an einem Ort gefunden werden können, aber es gibt nur so viel, was Chocolatey tun kann.

Wenn Sie die Dinge völlig anders betrachten, können Sie Installationsargumente wie folgt an ein Chocolatey-Paket übergeben:

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

Dies könnte theoretisch die Installationsargumente eines MSI- oder EXE-basierten Chocolatey-Pakets ändern, um den Installationsort der Dateien zu ändern. Ein Beispiel für diesen Ansatz finden Sie hier:

http://chocolatey.org/packages/VisualStudio2013Ultimate

Dieser Ansatz ist jedoch begrenzt. Nicht jeder nimmt sich die Zeit wie Matt, um die möglichen Installationsargumente zu erwähnen, und es ist ein ziemlich komplizierter Prozess, die Installationsargumente zu extrahieren, die möglicherweise an eine MSI oder EXE gesendet werden.

In Bezug auf ChocolateyGUI und als aktueller Betreuer dieses Produkts kann ich Ihnen sagen, dass es in diesem Bereich nichts Schlaues tut :-). Es ist einfach ein Wrapper um die Kommandozeilen-Tools, die Chocolatey zur Verfügung stellt, und zielt darauf ab, es Leuten zu erleichtern, die die Kommandozeile nicht mögen.

Gary Ewan Park
quelle
2
Es wird als Lösung chocolatey erzeugt für Paket Shim - Datei , die den Weg das Ziel zu ausführbar hält und macht , wenn sie mit genannt --shimgen-noopSchalter, siehe meine Antwort
maoizm
8
Fast 3 Jahre später ist dies immer noch das, was ich an choco am meisten frustriert finde: "etwas installiert. Jetzt ... wo ist es?"
Ben Collins
@BenCollins Ich gehe davon aus, dass Sie Chocolatey kürzlich ebenfalls aktualisiert haben? Es meldet jetzt, wo es Dinge installiert - und das seit fast einem Jahr (seit 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
1
"Auf '$ toolsDir' installierte Software" Gee, danke Chocolatey.
Blueben
1
Vielleicht speichern Sie das Installationsprotokoll in einem Chocolatey-Verzeichnis und geben Benutzern die Möglichkeit, es über den Paketnamen abzurufen ...
Marcello Romani
4

Wenn Chocolatey ein Shim für das Paket generiert, yourprogram.exekönnen Sie beispielsweise den Pfad zur ausführbaren Datei anhand des folgenden Powershell-Einzeilers angeben:

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

Dies funktioniert nur, wenn es sich bei dem Shim um eine EXE-Datei handelt. Dies ist sehr häufig, obwohl einige Pakete .ps1-, .cmd- oder sogar .bat-Dateien generieren. In diesen seltenen Fällen funktioniert dieses Rezept nicht.

Maoizm
quelle
4

Leider nicht das ich wüsste. Ich glaube, das Installationsverzeichnis wird vom Paket selbst bestimmt. Es ist nicht in der .nuspec-Datei definiert, und ich kann nirgendwo feststellen, dass es explizit im Chocolatey-Quellcode definiert ist.

Quellcode: https://github.com/chocolatey/chocolatey

tbenz9
quelle
Das ist richtig. Wenn Sie sich die Dokumentation zum Erstellen eines Pakets ansehen, werden Sie feststellen, dass für die meisten Pakete das vom ursprünglichen Software-Ersteller erstellte MSI-Installationsprogramm den Installationspfad definiert. Chocolatey hat keine Ahnung, wo das MSI Dateien ablegt.
Heavyd
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Wenn es sich um eine MSI handelte, konnte man normalerweise Folgendes bestehen -ia:

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

 

trotzdem
quelle