如何使用 Windows 10 内置包管理器?

Jon*_*han 13 package-management windows-10 windows-packagemanagement

我发现 Windows 10 包管理不是​​很直观。下面是我尝试安装 VLC 的冒险经历,这听起来像是一个非常常见的包管理器测试用例。

Find-Package vlc
Run Code Online (Sandbox Code Playgroud)

Find-Package -Update
Run Code Online (Sandbox Code Playgroud)

Install-Package --help
Run Code Online (Sandbox Code Playgroud)

Install-Package /?
Run Code Online (Sandbox Code Playgroud)

Install-Package vlc

The provider 'nuget v2.8.5.127' is not installed.
nuget may be manually downloaded from https://oneget.org/nuget-anycpu-2.8.5.127.exe and installed.
Would you like PackageManagement to automatically download and install 'nuget' now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
Install-Package : No match was found for the specified search criteria and package name 'vlc'.
At line:1 char:1
+ Install-Package vlc
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Ex
   ception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
Run Code Online (Sandbox Code Playgroud)

Register-PackageSource -Name chocolatey -Location http://chocolatey.org/api/v2 -Provider PSModule -Trusted -Verbose
Run Code Online (Sandbox Code Playgroud)

也许?

Install-Package vlc
WARNING: The module 'vlc' cannot be installed or updated because it is not a properly-formed module.
Run Code Online (Sandbox Code Playgroud)

Vim*_*mes 10

你很接近。首先,您必须将执行策略设置为允许脚本,否则它会在报告成功(错误)时静默失败:

Set-ExecutionPolicy RemoteSigned
Run Code Online (Sandbox Code Playgroud)

包提供者(Chocolatey 插件)和包源(特定 Chocolatey 存储库的 URL)都需要安装/注册到 PackageManagement。带有-Force标志的Get-PackageProvider导致它引导,这显然兼顾了两者(更多在关于 的帮助中-Force):

Get-PackageProvider Chocolatey -Force | Out-Null
Run Code Online (Sandbox Code Playgroud)

然后我可以搜索包:

Find-Package vlc -Force

Name       Version          Source           Summary
----       -------          ------           -------
vlc        2.2.1.20150630   chocolatey       VLC Media Player
Run Code Online (Sandbox Code Playgroud)

并安装它(-Force所以它不会提示确认):

Install-Package vlc -Force | Out-Null
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 哦,PackageManagement 中有一个 [非常令人困惑的错误](https://github.com/OneGet/oneget/issues/97#issuecomment-139331418),除非在安装包之前将执行策略设置为允许脚本(我使用 RemoteSigned)。我会更新我的答案。 (3认同)