我使用 Choco 安装了一个程序(Paint.Net)。当时版本是 3.13,但 Paint.Net 自行更新到 3.15。
但是,当我运行时choco outdated
,它仍然认为 3.13 已安装并想要(重新)安装 3.15。
有没有办法将 choco 本地数据库中已安装软件包的内容同步到实际当前版本?
这是 choco 的免费版本。
答案1
该选项在 chocolatey 中存在,但仅在付费版本中。它被称为 同步命令。您可以在上面的链接中找到有关使用它的更多信息。可以在以下位置找到描述该命令的视频 YouTube。
Chocolatey 也可以自动进行同步,具体描述如下
与程序和功能同步(仅限授权版本)。
据说,一个可以同步的免费巧克力程序管理器 部署,您可以尝试一下。
在紧急情况下,如果你不想让 chocolatey 更新某些包,忽略它们,你可以使用 choco pin 命令。
要使 Chocolatey 无需运行安装脚本即可识别已安装的应用程序,请使用参数-n
、--skippowershell
、--skip-powershell
、--skipscripts
、--skip-scripts
(--skip-automation-scripts
这些都是相同的开关)。请参阅
如何在不运行脚本的情况下安装或升级软件包。
您还可以将 chocolatey 连接至 Microsoft 的 PowerShell(与 Linux apt-get 对应): 一得,现已更名为包管理。包管理器是微软的名称,而底层开源项目仍名为 OneGet。然后,您将能够使用 PowerShell 作为 Windows 和 chocolatey 的唯一界面。
您可以在 Microsoft 博客中阅读有关 OneGet 的信息
PowerShell 中的新增功能:使用 Windows PowerShell 5.0 的一行即可开始使用 OneGet。
OneGet 是一个包管理器的管理器并且它支持 chocolatey 作为包提供程序。您可以使用 Find-PackageProvider 命令:
然后您可以使用 Install-PackageProvider 命令 设置巧克力界面(请注意,它仍然是一个原型,因此您必须摸索着去做):
Install-PackageProvider chocolatey -Scope CurrentUser
以下是从 chocolatey 库安装 Notepad++ 的 PowerShell 示例:
您可以在以下参考资料中找到更多信息:
答案2
该答案基于以下命令的输出:
choco outdated
正如另一个答案中提到的,Chocolatey 的开源版本中没有基于以其他方式更新的应用程序版本来自动更新 Chocolatey 软件包版本的方法。在 Chocolatey 的许可版本中,这特征可用。
如果你想用 Chocolatey 进行应用程序的初始安装,即
choco install paint.net
然后让应用程序自行更新,那么最好的建议是使用别针 命令。可以使用以下命令完成此操作:
choco pin add -n="paint.net"
这意味着当您运行该choco upgrade all
命令时(假设您正在使用它),即使找到了新版本,该包也将不再被视为升级。此外,该choco outdated
命令的输出将更改为以下内容:
如果您确实想从choco outdated
报告中删除该条目,但又想依赖应用程序自我更新的能力,那么您应该能够运行以下命令:
choco upgrade paint.net --skip-automation-scripts
这会告诉 Chocolatey 将软件包升级到当前可用的版本,但它也会阻止执行 chocolateyInstall.ps1(和其他文件)文件,这意味着应用程序安装程序永远不会被执行。如下所示:
运行上述命令后,命令的输出choco outdated
变为: