Chocolateyパッケージとそのインストールディレクトリをリストする方法はありますか?


56

コマンド

choco list -lo

インストール済みパッケージをリストします。しかし、Chocolateyアプリケーションがインストールされる場所をどのように判断するのでしょうか?これまでのところ、私は彼らを探し回らなければなりませんでした。

いくつかの例:

  • NUnitは Program Files (x86)
  • WGETに行く %ALLUSERSPROFILE%\chocolatey\bin and %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools
  • ConsoleZは %ALLUSERSPROFILE%\chocolatey\lib\[Package Name]\tools

choco list彼らがどこに行ったのかを知らせる旗がありますか?ChocolateyGUIもこれを行っていないようです。

Debianのようなもの:

dpkg-query

またはRedHatの:

rpm -ql [package-name]

または、YUMのrepoquery:

repoquery --list [package-name]

自作

brew list [package-name]

回答:


26

現在、あなたが求めていることをする方法はありません。

各Chocolateyパッケージは、MSIまたはEXEのラッパーになる可能性があるという意味、または既知の場所(つまりC:\ tools)への圧縮アーカイブの単純な抽出、またはPSModulePathに抽出するか、完全にカスタムのものにすることができます。

これは、同じことを行う方法が複数あるWindowsエコシステムの副作用です。Chocolateyは、少なくとも1つの場所で必要なすべてのパッケージを見つけるメカニズムを提供することで、これに何らかの順序を付けようとしていますが、Chocolateyができることは限られています。

物事をまったく異なる方法で見ると、以下を使用してインストール引数をChocolateyパッケージに渡すことができます。

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

これは、理論的には、MSIまたはEXEベースのChocolateyパッケージのインストール引数を変更して、ファイルのインストール先を変更する可能性があります。ここで使用されているこのアプローチの例を見ることができます:

http://chocolatey.org/packages/VisualStudio2013Ultimate

ただし、このアプローチには制限があります。Mattのように誰もが可能なインストール引数について言及するのに時間がかかるわけではなく、MSIまたはEXEに送信可能なインストール引数を抽出するのは非常に複雑なプロセスです。

ChocolateyGUIの観点から、およびその製品の現在のメンテナーとして、この分野では巧妙なことは何もしていないと言うことができます:-)。これは、Chocolateyが提供するコマンドラインツールの単なるラッパーであり、コマンドラインの使用を好まない人が簡単に使用できるようにすることを目的としています。


2
chocolateyのような溶液は、実行可能ファイルへのパスを保持して呼び出された場合、ターゲット公開されたパッケージのためのシムファイル生成があり--shimgen-noop、スイッチは私の答えを参照
maoizm

8
ほぼ3年後、これはまだチョコについて最もイライラするものです:「ものをインストールしました。今....それはどこですか?」
ベンコリンズ

@BenCollinsあなたも最近Chocolateyをアップグレードしたと思いますか?今では、どこにインストールするかを報告します-そして、ほぼ1年間(0.9.10以降)持っています。github.com/chocolatey/choco/issues/689
ferventcoder

1
「 '$ toolsDir'にインストールされたソフトウェア」
ブルーベン

1
おそらくチョコレートのようなディレクトリにインストールログを保存し、ユーザーがパッケージ名でログを取得できるようにします...
Marcello Romani

4

Chocolateyがパッケージのシムを生成する場合、たとえばyourprogram.exe、次のPowershellワンライナーで実行可能ファイルへのパスを指定できます。

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

これは、shimが.exeファイルの場合にのみ機能します。これは非常に一般的ですが、一部のパッケージは.ps1、.cmd、または.batファイルを生成します。これらのまれなケースでは、このレシピは機能しません。


4

残念ながら、私が知っていることではありません。インストールディレクトリは、パッケージ自体によって決定されると思います。.nu​​specファイルでは定義されておらず、Chocolateyソースコードで明示的に定義されていることはどこにもわかりません。

ソースコード:https : //github.com/chocolatey/chocolatey


これは正しいです。パッケージを作成するためドキュメントを見ると、ほとんどのパッケージについて、元のソフトウェア作成者が作成したMSIインストーラーがインストールパスを定義していることがわかります。Chocolateyは、MSIがファイルを配置する場所を知りません。
14

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

それがMSIである場合、通常は以下を渡すことができます-ia

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

 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.