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

18818
antwarpes

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, wo sie hingegangen sind? ChocolateyGUI scheint das 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] 
52

4 Antworten auf die Frage

26
Gary Ewan Park

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

Jedes Chocolatey-Paket ist insofern einzigartig, als es ein Wrapper für ein MSI oder eine EXE-Datei sein könnte, oder es könnte ein einfaches Extrahieren eines komprimierten Archivs an einen bekannten Speicherort, z. B. C: \ tools, oder ein PowerShell-Modul sein Extrahiert nach PSModulePath, 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, eine Art Ordnung zu schaffen, indem es einen Mechanismus bereitstellt, um zumindest alle Pakete, die Sie möchten, an einem Ort zu finden, aber es gibt nur so viel Chocolatey.

Wenn Sie die Dinge ganz anders betrachten, ist es möglich, Installationsargumente an ein Chocolatey-Paket zu übergeben, indem Sie Folgendes verwenden:

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 sehen 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 komplizierter Prozess, um die Installationsargumente zu extrahieren, die in ein MSI oder eine EXE-Datei gesendet werden können.

In Bezug auf ChocolateyGUI und als aktueller Betreuer dieses Produkts kann ich Ihnen sagen, dass es in diesem Bereich nichts Gescheites tut :-). Es ist einfach ein Wrapper um die Befehlszeilen-Tools, die Chocolatey zur Verfügung stellt, und soll es für Leute einfacher machen, die die Befehlszeile nicht mögen.

Es gibt eine Lösung, da chocolatey eine Shim-Datei für ein Paket erstellt, die den Pfad zur ausführbaren Datei enthält und das Ziel verfügbar macht, wenn es mit dem Schalter "--shimgen-noop" aufgerufen wird. Siehe meine Antwort maoizm vor 7 Jahren 2
Fast drei Jahre später finde ich das am meisten frustrierend über choco: "Ein Ding installiert. Jetzt ... wo ist es?" Ben Collins vor 6 Jahren 4
@ BenCollins Ich gehe davon aus, dass Sie kürzlich auch Chocolatey aktualisiert haben? Es meldet jetzt, wo es installiert wird - und das seit fast einem Jahr (seit dem 0.9.10). https://github.com/chocolatey/choco/issues/689 ferventcoder vor 6 Jahren 0
@ferventcoder wann / wo meldet Chocolatey, wo es installiert? Ich habe gerade Chocolatey v0.10.8 installiert und dann ein Programm installiert, und ich konnte nicht sehen, wo berichtet wurde, wo es installiert wurde Matthew vor 6 Jahren 0
@Matthew im Protokoll am Ende jeder Paketinstallation. So etwas wie "Software auf ____ installiert." Normalerweise sehen Sie im Protokoll. Es ist in der Regel direkt nach "Die Installation von ___ war erfolgreich." ferventcoder vor 6 Jahren 0
"Software auf" $ toolsDir "installiert" Gee, danke Chocolatey. blueben vor 5 Jahren 0
@blueben welches Paket zeigt dir diese Ausgabe? Und welche Version von Chocolatey? Gary Ewan Park vor 5 Jahren 0
Speichern Sie das Installationsprotokoll in einem schokoladigen Verzeichnis und geben Sie den Benutzern die Möglichkeit, es anhand des Paketnamens abzurufen ... Marcello Romani vor 5 Jahren 0
4
tbenz9

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 sehen, dass es explizit im Chocolatey-Quellcode definiert ist.

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

Das ist richtig. Wenn Sie sich die [Dokumente zum Erstellen eines Pakets] (https://github.com/chocolatey/chocolatey/wiki/CreatePackages#installation-paths) ansehen, werden Sie feststellen, dass das von dem ursprünglichen Software-Ersteller erstellte MSI-Installationsprogramm für die meisten Pakete das definiert Installationspfad. Chocolatey hat keine Ahnung, wo das MSI Dateien ablegt. heavyd vor 9 Jahren 0
4
maoizm

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

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

Dies funktioniert nur, wenn shim die exe-Datei ist. Dies ist sehr häufig, obwohl einige Pakete .ps1-, cmd- oder sogar .bat-Dateien generieren. In diesen seltenen Fällen funktioniert dieses Rezept nicht.

1
themoretheless
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'" 

Wenn es sich um ein MSI handelte, könnten Sie normalerweise Folgendes bestehen -ia:

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