Apakah ada cara untuk mendaftar paket Chocolatey dengan direktori instal mereka?

56

Perintah

choco list -lo

daftar paket yang diinstal. Tetapi bagaimana cara menentukan di mana aplikasi Chocolatey dipasang? Sejauh ini saya harus berburu untuk mereka.

Beberapa contoh:

  • NUnit pergi ke Program Files (x86)
  • WGET pergi ke %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ pergi ke %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

Apakah ada bendera choco listyang akan memberi tahu saya ke mana mereka pergi? ChocolateyGUI juga sepertinya tidak melakukan hal ini.

Semacam seperti milik Debian:

dpkg-query

Atau RedHat:

rpm -ql [package-name]

Atau repoquery YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]
antwarpes
sumber

Jawaban:

26

Saat ini, tidak ada cara untuk melakukan apa yang Anda minta.

Setiap paket Chocolatey unik dalam arti bahwa itu bisa menjadi pembungkus di sekitar MSI atau EXE, atau itu bisa berupa ekstraksi sederhana dari arsip terkompresi ke lokasi yang dikenal yaitu C: \ tools, atau bisa juga modul PowerShell yang ekstrak ke PSModulePath, atau itu bisa menjadi sesuatu yang sepenuhnya khusus.

Ini adalah efek samping dari ekosistem Windows, di mana ada banyak cara untuk melakukan hal yang sama. Chocolatey mencoba membawa semacam pesanan dengan menyediakan mekanisme untuk setidaknya menemukan semua paket yang Anda inginkan di satu tempat, tetapi hanya ada banyak yang bisa dilakukan Chocolatey.

Jika Anda melihat hal-hal yang sangat berbeda, dimungkinkan untuk meneruskan argumen instalasi ke paket Chocolatey menggunakan yang berikut:

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

Secara teori, ini bisa mengubah argumen instalasi dari paket Chocolatey berbasis MSI atau EXE untuk mengubah ke mana file diinstal. Anda dapat melihat contoh pendekatan ini yang digunakan di sini:

http://chocolatey.org/packages/VisualStudio2013Ulalue

Namun, pendekatan ini terbatas. Tidak semua orang membutuhkan waktu seperti Matt untuk menyebutkan kemungkinan argumen instalasi yang mungkin, dan itu adalah proses yang cukup rumit untuk mengekstraksi argumen instalasi yang mungkin dikirim ke MSI atau EXE.

Dalam hal ChocolateyGUI, dan sebagai pemelihara produk saat ini, saya dapat memberi tahu Anda bahwa tidak ada yang pintar dalam bidang ini :-). Ini hanyalah pembungkus di sekitar alat baris perintah yang disediakan Chocolatey, dan bertujuan untuk memudahkan orang yang tidak suka menggunakan baris perintah.

Taman Gary Ewan
sumber
2
Ada solusi karena chocolatey menghasilkan file shim untuk paket yang menjaga jalur untuk dieksekusi dan mengekspos target jika dipanggil dengan --shimgen-noopswitch, lihat jawaban saya
maoizm
8
Hampir 3 tahun kemudian, ini masih hal yang paling membuat saya frustrasi tentang choco: "menginstal sesuatu. Sekarang .... di mana itu?"
Ben Collins
@ BenCollins, saya berasumsi Anda telah meningkatkan Chocolatey baru-baru ini juga? Sekarang melaporkan di mana ia menginstal sesuatu - dan itu sudah hampir satu tahun sekarang (sejak 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder
1
"Perangkat lunak yang diinstal ke '$ toolsDir'" Wah, terima kasih Chocolatey.
blueben
1
Mungkin menyimpan log instalasi di beberapa direktori cokelat dan memberi pengguna kemampuan untuk mengambilnya dengan nama paket ...
Marcello Romani
4

Jika Chocolatey menghasilkan shim untuk paket tersebut, misalnya yourprogram.exeAnda bisa memberi tahu path ke file yang dapat dieksekusi oleh Powershell one-liner berikut:

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

Ini hanya berfungsi jika shim adalah file .exe. Ini sangat umum, meskipun beberapa paket menghasilkan file .ps1, .cmd atau bahkan .bat. Dalam kasus yang jarang terjadi, resep ini tidak akan berfungsi.

maoizm
sumber
4

Sayangnya, bukan itu yang saya tahu. Saya percaya direktori instal ditentukan oleh paket itu sendiri. Itu tidak didefinisikan dalam file .nuspec, dan saya tidak dapat melihat di mana pun bahwa itu secara eksplisit didefinisikan dalam kode sumber Chocolatey.

Kode sumber: https://github.com/chocolatey/chocolatey

tbenz9
sumber
Ini benar. Melihat dokumen untuk membuat paket Anda akan melihat bahwa untuk sebagian besar paket installer MSI yang dibuat oleh pembuat perangkat lunak asli menentukan jalur instalasi. Chocolatey tidak tahu di mana MSI meletakkan file.
heavyd
1
cinst notepadplusplus.install -ia "'/D=E:\SomeDirectory\npp'"

Jika itu adalah MSI, maka biasanya Anda bisa lulus -ia:

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

 

meskipun demikian
sumber