PowerShell 7使用巧克力作为包装管理器

PowerShell 7使用巧克力作为包装管理器,powershell,package,package-managers,chocolatey,Powershell,Package,Package Managers,Chocolatey,对于PackageManager,PowerShell 5和7仍然不同 巧克力似乎还没有“集成”,我不能像在PowerShell 5中那样在PowerShell 7中使用巧克力 我已经按照他们网站上说的方式安装了Chocolate,但这让我可以使用Chocolate来启动我的命令 如何在PowerShell 7中配置Chocolate,以便像在PowerShell 5中一样使用它 Find Package-ProviderName巧克力-Name 从PowerShell[Core]7开始,您似乎

对于PackageManager,PowerShell 5和7仍然不同
巧克力似乎还没有“集成”,我不能像在PowerShell 5中那样在PowerShell 7中使用巧克力

我已经按照他们网站上说的方式安装了Chocolate,但这让我可以使用Chocolate来启动我的命令

如何在PowerShell 7中配置Chocolate,以便像在PowerShell 5中一样使用它
Find Package-ProviderName巧克力-Name

  • 从PowerShell[Core]7开始,您似乎无法将其用作PowerShell模块的提供程序,这意味着您无法发现或安装带有和的巧克力软件包

  • 然而,通过其
    choco.exe
    直接使用chocolate在PowerShell[Core]
    中运行良好(只要系统上存在运行时,
    *.exe
    文件就可以运行,它不必与PowerShell的运行时相同)

请继续阅读背景信息:


看起来,实现PackageManagement提供程序需要以仅支持.NET Framework(FullCLR)的方式访问Chocomey API,而不支持.NET Core(PowerShell[Core]是在其上构建的)[1];引用自read me of,社区提供的官方提供商从未发布过的原型的替代方案:

目前,Chocolatier在全CLR上工作。CoreClr(…)上不支持它。主要原因是当前版本的choco.exe似乎还不支持CoreClr

在Windows PowerShell上使用时:

巧克力包装管理提供商的官方-仅限Windows PowerShell-原型至今(多年后)尚未实施;以下是于2020年4月13日检索到的内容(重点补充):

Chocolate为Windows 10/Windows Server 2016上的内置软件包管理器提供了一个原型提供商,该软件包管理器不久前由Microsoft创建。它功能不全,并且可能存在安全问题。如果您想在PackageManager中使用Chocolate,我们建议您使用ChocolateyGet,这是一个很好的桥梁,直到正式实现为止未定义ETA

注:

  • 前面提到的,建立在上面的,似乎是在撰写本文时更积极维护的项目

  • 最近有一个社区成员正在等待官方原型的发布,但没有得到任何关注;而且,它也还没有完成;有关完整的背景故事,请参见



[1] 如果您知道详细信息,请务必让我们知道。

我负责管理mklement0在其(出色)回答中提到的巧克力店社区项目

您是对的,PackageManager在PowerShell 7下的工作方式有点不同,在其初始版本中,许多PackageManager提供程序根本不起作用。在PowerShell 7的7.0.1版本中修复了in-PowerShell 7,但PackageManagement提供程序的维护人员仍需进行一些工作才能与PowerShell 7集成

截至2020年5月,Chocolatier提供商将同时使用PowerShell 5.1和PowerShell 7,尽管Chocolate是在与PowerShell 7不兼容的旧.NET框架中编写的。当提供程序在PowerShell 7下运行时,它将为您构建并运行chocolate CLI命令(例如:
choco install firefox
),从而绕过.NET兼容性问题


如果您仍然对使用PackageManager与巧克力互动感兴趣,我建议您试一试。我已经通过个人和专业用途(与私有存储库和所需的状态配置一起使用)对其进行了迭代,尽管我有点偏见,但我对它非常满意。

谢谢,@pauby-我已经将PR链接添加到了答案中(我不会屏住呼吸说它很快就会被接受)而且还明确表示,直接使用
choco.exe
在PowerShell[Core]中也可以正常工作。如果您了解更多技术细节,了解为什么为Chocolate实现PackageManager提供程序需要FullCLR(谁在加载过程中加载了什么?),请务必告诉我们。谢谢Ethan,我将尝试使用它,因为您的包管理是真正的开源。那么我应该卸载巧克力吗?安装您的提供商choco install似乎仍然存在。如果我安装PS core(
choco install powershell core
),我的PS 5会被删除吗?使用您的东西,我的choco软件会保留吗?嘿@Timo-是的,如果您安装提供商,Chocolate的基础安装将保留。关于安装PowerShell Core,我不确定它是否会升级您现有的PowerShell 5安装,但我猜它会升级。