C'è un modo per elencare i pacchetti Chocolatey con la loro directory di installazione?


56

Il comando

choco list -lo

elenca i pacchetti installati. Ma come faccio a determinare dove viene installata un'applicazione Chocolatey? Finora ho dovuto cercare loro.

Qualche esempio:

  • NUnit va a Program Files (x86)
  • WGET va a %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZ è andato a %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

C'è una bandiera choco listche mi dirà dove sono andati? Anche ChocolateyGUI non sembra farlo.

In qualche modo simile a quello di Debian:

dpkg-query

O RedHat's:

rpm -ql [package-name]

O il repoquery di YUM:

repoquery --list [package-name]

Homebrew :

brew list [package-name]

Risposte:


26

Attualmente, non c'è modo di fare quello che stai chiedendo.

Ogni pacchetto Chocolatey è unico nel senso che potrebbe essere un wrapper attorno a un MSI o un EXE, oppure potrebbe essere una semplice estrazione di un archivio compresso in una posizione nota, ad esempio C: \ tools, oppure potrebbe essere un modulo PowerShell che estrae in PSModulePath o potrebbe essere qualcosa di completamente personalizzato.

Questo è un effetto collaterale dell'ecosistema Windows, in cui esistono diversi modi per fare la stessa cosa. Chocolatey sta cercando di portare a una sorta di ordine a questo fornendo un meccanismo per trovare almeno tutti i pacchetti che vuoi in un posto, ma c'è solo così tanto che Chocolatey può fare.

Se guardi le cose in modo completamente diverso, è possibile passare argomenti di installazione a un pacchetto Chocolatey usando quanto segue:

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

Ciò potrebbe, in teoria, modificare gli argomenti di installazione di un pacchetto Chocolatey basato su MSI o EXE per cambiare la posizione in cui sono installati i file. Puoi vedere un esempio di questo approccio utilizzato qui:

http://chocolatey.org/packages/VisualStudio2013Ultimate

Tuttavia, questo approccio è limitato. Non tutti impiegano il tempo come Matt a menzionare i possibili argomenti di installazione possibili, ed è un processo piuttosto complicato estrarre gli argomenti di installazione che è possibile inviare in un MSI o EXE.

In termini di ChocolateyGUI, e come attuale manutentore di quel prodotto, posso dirti che non fa nulla di intelligente in questo settore :-). È semplicemente un wrapper per gli strumenti da riga di comando forniti da Chocolatey e mira a semplificare le persone a cui non piace utilizzare la riga di comando.


2
C'è una soluzione poiché chocolatey genera il file shim per il pacchetto che mantiene il percorso dell'eseguibile ed espone il bersaglio se chiamato con --shimgen-noopswitch, vedi la mia risposta
maoizm

8
Quasi 3 anni dopo, questa è ancora la cosa che trovo più frustrante di choco: "installato una cosa. Ora .... dove si trova?"
Ben Collins,

@BenCollins Presumo che tu abbia aggiornato anche Chocolatey di recente? Ora riporta dove installa le cose - e lo fa da quasi un anno (dal 0.9.10). github.com/chocolatey/choco/issues/689
ferventcoder

1
"Software installato su '$ toolsDir'" Accidenti, grazie Chocolatey.
blueben

1
Magari archiviando il registro di installazione in una directory cioccolatosa e dando agli utenti la possibilità di recuperarlo con il nome del pacchetto ...
Marcello Romani,

4

Se Chocolatey genera uno shim per il pacchetto, ad esempio yourprogram.exeè possibile indicare il percorso del file eseguibile tramite il seguente one-liner Powershell:

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

Funziona solo se shim è un file .exe. Questo è molto comune, anche se alcuni pacchetti generano file .ps1, .cmd o persino .bat. In questi rari casi questa ricetta non funzionerà.


4

Sfortunatamente, non che io sappia. Credo che la directory di installazione sia determinata dal pacchetto stesso. Non è definito nel file .nuspec e non riesco a vedere da nessuna parte che è esplicitamente definito nel codice sorgente di Chocolatey.

Codice sorgente: https://github.com/chocolatey/chocolatey


Questo è corretto. Guardando i documenti per la creazione di un pacchetto vedrai che per la maggior parte dei pacchetti il ​​programma di installazione MSI creato dal creatore del software originale definisce il percorso di installazione. Chocolatey non ha idea di dove l'MSI inserisca i file.
pesante

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

Se fosse un MSI, di solito potresti passare -ia:

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

 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.