Czy istnieje sposób na wyświetlenie listy pakietów Chocolatey z ich katalogiem instalacyjnym?

56

Komenda

choco list -lo

wyświetla zainstalowane pakiety. Ale jak ustalić, gdzie instaluje się aplikacja Chocolatey? Do tej pory musiałem ich szukać.

Kilka przykładów:

  • NUnit idzie do Program Files (x86)
  • WGET idzie do %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ poszedł do %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Czy jest tam flaga choco list, która powie mi, gdzie poszli? ChocolateyGUI też tego nie robi.

Coś w rodzaju Debiana:

dpkg-query

Lub RedHat's:

rpm -ql [package-name]

Lub repozytorium YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
antwarpes
źródło

Odpowiedzi:

26

Obecnie nie ma możliwości zrobienia tego, o co prosisz.

Każdy pakiet Chocolatey jest unikalny w tym sensie, że może być opakowaniem wokół pliku MSI lub EXE, lub może być prostą ekstrakcją skompresowanego archiwum do znanej lokalizacji, tj. C: \ tools, lub może to być moduł PowerShell, który wypakowuje do PSModulePath, lub może to być coś całkowicie niestandardowego.

Jest to efekt uboczny ekosystemu Windows, w którym istnieje wiele sposobów na zrobienie tego samego. Chocolatey próbuje uporządkować to, zapewniając przynajmniej mechanizm wyszukiwania wszystkich pakietów w jednym miejscu, ale Chocolatey może zrobić tylko tyle.

Jeśli spojrzysz na to zupełnie inaczej, możliwe jest przekazanie argumentów instalacyjnych do pakietu Chocolatey przy użyciu następujących czynności:

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

Teoretycznie mogłoby to zmienić argumenty instalacyjne pakietu Chocolatey opartego na MSI lub EXE, aby zmienić miejsce instalacji plików. Przykład zastosowania tego podejścia można zobaczyć tutaj:

http://chocolatey.org/packages/VisualStudio2013Ultimate

To podejście jest jednak ograniczone. Nie wszyscy tak jak Matt wspominają o możliwych możliwych argumentach instalacyjnych, a wyodrębnianie argumentów instalacyjnych, które można wysłać do MSI lub EXE, jest dość skomplikowane.

Jeśli chodzi o ChocolateyGUI i jako obecny opiekun tego produktu, mogę powiedzieć, że nie robi nic sprytnego w tym obszarze :-). Jest to po prostu opakowanie wokół narzędzi wiersza poleceń, które zapewnia Chocolatey, i ma na celu ułatwienie osobom, które nie lubią korzystać z wiersza poleceń.

Gary Ewan Park
źródło
2
Istnieje rozwiązanie, ponieważ Chocolatey generuje plik shim dla pakietu, który zachowuje ścieżkę do pliku wykonywalnego i ujawnia cel, jeśli zostanie wywołany --shimgen-noopprzełącznikiem, zobacz moją odpowiedź
maoizm
8
Prawie 3 lata później nadal najbardziej frustruje mnie choco: „zainstalowałem coś. Teraz… gdzie to jest?”
Ben Collins
@BenCollins Zakładam, że ostatnio również zaktualizowałeś Chocolatey? Teraz informuje, gdzie instaluje rzeczy - i ma już prawie rok (od 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
1
„Oprogramowanie zainstalowane w '$ toolsDir'” Gee, dzięki Chocolatey.
blueben
1
Może przechowywanie dziennika instalacji w jakimś czekoladowym katalogu i dać użytkownikom możliwość odzyskania go według nazwy pakietu ...
Marcello Romani,
4

Jeśli Chocolatey generuje podkładkę dystansową dla pakietu, np. yourprogram.exeMożesz podać ścieżkę do pliku wykonywalnego za pomocą następującego linijki PowerShell:

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

Działa to tylko wtedy, gdy podkładka jest plikiem .exe. Jest to bardzo powszechne, chociaż niektóre pakiety generują pliki .ps1, .cmd, a nawet .bat. W tych rzadkich przypadkach ten przepis nie działa.

maoizm
źródło
4

Niestety nie wiem o tym. Uważam, że katalog instalacyjny jest określany przez sam pakiet. Nie jest zdefiniowany w pliku .nuspec i nigdzie nie widzę, że jest wyraźnie zdefiniowany w kodzie źródłowym Chocolatey.

Kod źródłowy: https://github.com/chocolatey/chocolatey

tbenz9
źródło
To jest poprawne. Przeglądając dokumentację dotyczącą tworzenia pakietu , zobaczysz, że dla większości pakietów instalator MSI utworzony przez twórcę oprogramowania określa ścieżkę instalacji. Chocolatey nie ma pojęcia, gdzie MSI umieszcza pliki.
ciężki
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Jeśli był to MSI, zwykle można przekazać -ia:

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

 

mimo wszystko
źródło