![有没有办法列出 Chocolatey 包及其安装目录?](https://linux22.com/image/1416340/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%88%97%E5%87%BA%20Chocolatey%20%E5%8C%85%E5%8F%8A%E5%85%B6%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
命令
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]
答案1
目前,没有办法实现您所要求的操作。
每个 Chocolatey 包都是独一无二的,因为它可以是 MSI 或 EXE 的包装器,也可以是将压缩档案简单提取到已知位置(即 C:\tools),也可以是提取到 PSModulePath 的 PowerShell 模块,还可以是完全自定义的东西。
这是 Windows 生态系统的一个副作用,因为在 Windows 生态系统中,有多种方法可以完成同一件事。Chocolatey 试图通过提供一种机制来让这个过程变得有序,至少可以在一个地方找到所需的所有软件包,但 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
我发现了一些有用的东西
C:\ProgramData\chocolatey\logs\choco.summary.log
C:\ProgramData\chocolatey\logs\chocolatey.log
当然,这些日志包含大量冗余信息(就本例而言)。但至少可以通过查看它们来更好地了解 chocolatey 到底做了什么。
答案3
这可能缺少一些结果,但帮助我找到了一些包:
(Get-Content C:\ProgramData\chocolatey\logs\choco.summary.log) -match 'Software installed to'
答案4
不幸的是,据我所知没有。我相信安装目录是由包本身决定的。它没有在 .nuspec 文件中定义,而且我在 Chocolatey 源代码中没有看到任何地方明确定义它。