Có cách nào để liệt kê các gói Chocolatey với thư mục cài đặt của họ không?


56

Lệnh

choco list -lo

liệt kê các gói đã cài đặt Nhưng làm cách nào để xác định nơi cài đặt ứng dụng Chocolatey? Cho đến nay tôi đã phải săn lùng chúng.

Vài ví dụ:

  • NUnit đi đến Program Files (x86)
  • WGET đi đến %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ đã đi đến %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Có một lá cờ trên choco listđó sẽ cho tôi biết họ đã đi đâu? ChocolateyGUI dường như cũng không làm điều này.

Sắp xếp giống như của Debian:

dpkg-query

Hoặc RedHat:

rpm -ql [package-name]

Hoặc repoquery của YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]

Câu trả lời:


26

Hiện tại, không có cách nào để làm những gì bạn đang yêu cầu.

Mỗi gói Chocolatey là duy nhất theo nghĩa nó có thể là một trình bao bọc xung quanh MSI hoặc EXE hoặc có thể là một trích xuất đơn giản của một kho lưu trữ nén đến một vị trí đã biết, ví dụ như C: \ tools, hoặc nó có thể là mô-đun PowerShell trích xuất vào PSModulePath, hoặc nó có thể là một cái gì đó hoàn toàn tùy chỉnh.

Đây là một tác dụng phụ của hệ sinh thái Windows, nơi có nhiều cách để làm điều tương tự. Chocolatey đang cố gắng mang lại một số thứ tự cho việc này bằng cách cung cấp một cơ chế để ít nhất tìm thấy tất cả các gói mà bạn muốn ở một nơi, nhưng chỉ có rất nhiều Chocolatey có thể làm.

Nếu bạn nhìn mọi thứ hoàn toàn khác nhau, có thể chuyển các đối số cài đặt sang gói Chocolatey bằng cách sử dụng như sau:

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

Về lý thuyết, điều này có thể thay đổi các đối số cài đặt của gói Chocolatey dựa trên MSI hoặc EXE để thay đổi nơi các tệp được cài đặt. Bạn có thể thấy một ví dụ về phương pháp này đang được sử dụng ở đây:

http://chatioatey.org/packages/VisualStudio2013Ultimate

Tuy nhiên, cách tiếp cận này còn hạn chế. Không phải ai cũng dành thời gian như Matt để đề cập đến các đối số cài đặt có thể có, và đó là một quá trình khá phức tạp để trích xuất các đối số cài đặt có thể được gửi vào MSI hoặc EXE.

Về mặt ChocolateyGUI, và là người duy trì hiện tại của sản phẩm đó, tôi có thể nói với bạn rằng nó không có gì thông minh trong lĩnh vực này :-). Nó chỉ đơn giản là một trình bao bọc xung quanh các công cụ dòng lệnh mà Chocolatey cung cấp và nhằm mục đích giúp mọi người không thích sử dụng dòng lệnh dễ dàng hơn.


2
Có giải pháp là chocolatey tạo tập tin shim cho gói giữ đường dẫn đến thực thi và hiển thị mục tiêu nếu được gọi bằng --shimgen-noopchuyển đổi, xem câu trả lời của tôi
maoizm

8
Gần 3 năm sau, đây vẫn là điều tôi cảm thấy bực bội nhất về choco: "đã cài đặt một thứ. Bây giờ .... nó ở đâu?"
Ben Collins

@BenCollins Tôi cho rằng gần đây bạn cũng đã nâng cấp Chocolatey phải không? Bây giờ nó báo cáo nơi nó cài đặt mọi thứ - và nó đã có gần một năm nay (kể từ 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder

1
"Phần mềm được cài đặt thành '$ toolsDir'" Gee, cảm ơn Chocolatey.
blueben

1
Có thể lưu trữ nhật ký cài đặt trong một số thư mục sô cô la và cung cấp cho người dùng khả năng truy xuất nó theo tên gói ...
Marcello Romani

4

Nếu Chocolatey tạo ra một shim cho gói, ví dụ: yourprogram.exebạn có thể cho biết đường dẫn đến tệp thực thi bằng cách sử dụng một lớp lót Powershell sau:

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

Điều này chỉ hoạt động nếu shim là tập tin .exe. Điều này rất phổ biến, mặc dù một số gói tạo các tệp .ps1, .cmd hoặc thậm chí .bat. Trong những trường hợp hiếm hoi, công thức này sẽ không hiệu quả.


4

Thật không may, không phải là tôi biết. Tôi tin rằng thư mục cài đặt được xác định bởi chính gói. Nó không được xác định trong tệp .nuspec và tôi không thể thấy bất cứ nơi nào nó được xác định rõ ràng trong mã nguồn Chocolatey.

Mã nguồn: https://github.com/chocolatey/chocolatey


Chính xác. Nhìn vào các tài liệu để tạo một gói bạn sẽ thấy rằng đối với hầu hết các gói, trình cài đặt MSI được tạo bởi người tạo phần mềm gốc xác định đường dẫn cài đặt. Chocolatey không biết MSI đặt tập tin ở đâu.
heavyyd

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

Nếu đó là MSI, thông thường bạn có thể vượt qua -ia:

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

 

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.