![有沒有辦法列出 Chocolatey 軟體包及其安裝目錄?](https://rvso.com/image/1416340/%E6%9C%89%E6%B2%92%E6%9C%89%E8%BE%A6%E6%B3%95%E5%88%97%E5%87%BA%20Chocolatey%20%E8%BB%9F%E9%AB%94%E5%8C%85%E5%8F%8A%E5%85%B6%E5%AE%89%E8%A3%9D%E7%9B%AE%E9%8C%84%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
或紅帽的:
rpm -ql [package-name]
或 YUM 的 repoquery:
repoquery --list [package-name]
自製:
brew list [package-name]
答案1
目前,無法完成您所要求的操作。
每個 Chocolatey 套件都是獨一無二的,因為它可以是 MSI 或 EXE 的包裝器,也可以是將壓縮檔案簡單地提取到已知位置(即 C:\tools),也可以是 PowerShell 模組提取到PSModulePath,或者它可能是完全自訂的東西。
這是 Windows 生態系統的副作用,在 Windows 生態系統中,有許多方法可以完成同一件事。 Chocolatey 試圖透過提供一種機制來至少在一個地方找到您想要的所有包,從而為此帶來某種秩序,但 Chocolatey 能做的只有這麼多。
如果您以完全不同的方式看待事物,則可以使用以下命令將安裝參數傳遞給 Chocolatey 套件:
https://github.com/chocolatey/chocolatey/wiki/CommandsInstall#installarguments-可選---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
當然,這些日誌包含大量冗餘(對於本例)資訊。但至少可以透過觀察它們來更好地理解巧克力的真正作用。
答案3
這可能會丟失一些結果,但幫我找到了一些包:
(Get-Content C:\ProgramData\chocolatey\logs\choco.summary.log) -match 'Software installed to'
答案4
不幸的是,據我所知並非如此。我相信安裝目錄是由套件本身決定的。它沒有在 .nuspec 檔案中定義,而且我看不到它在 Chocolatey 原始碼中明確定義的任何地方。