有一段时间,我使用这样的构造来检查在运行安装程序之前是否已经安装了软件包:
if (!(Test-Path "Program Files\7-Zip")) {
$command = "if ((choco list --local-only 7zip) -match '^0 packages') { choco install 7zip -y }"
Start-Process "powershell.exe" -WindowStyle Hidden -Wait -ArgumentList "-sta -noprofile -executionpolicy unrestricted $command"
}
这几年来效果很好,但现在看起来他们已经更改了
Chocolatey
中的开关,因此 choco list --local-only 7zip
现在会生成错误:
Invalid argument --local-only. This argument has been removed from the list command and cannot be used.
现在测试
Chocolatey
软件包是否已安装的最有效方法是什么?
你是对的,随着 Chocolatey CLI 2.0.0 (https://docs.chocolatey.org/en-us/choco/release-notes#may-31-2023) 的发布,
choco list
的功能命令改变了。所以现在,而不是这样做:
choco list —local-only 7zip
你可以简单地做:
choco list 7zip
丢失的命令现在only作用于本地包,因此不需要--local-only选项。