抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Winget、ScoopChocolatey` 是三种在Windows系统上流行的包管理器,它们旨在简化软件的安装、更新和卸载过程,类似于Linux系统中的apt或yum。

这里分别简述如何使用Winget、Scoop和Chocolatey这三个包管理器在Windows上安装软件。

Winget

Winget(Windows Package Manager)是由微软官方推出的一种命令行工具,集成在Windows 10及以上版本中。它允许用户通过简单的命令行指令来搜索、安装、升级、配置和卸载应用程序。Winget支持从Microsoft Store以及认可的第三方仓库中获取应用程序,确保了软件来源的安全性和可靠性。

1. 安装Winget

首先确保你的Windows版本为10 1809及以上或Windows 11。然后,打开PowerShell(以管理员身份运行)并执行以下命令来安装Winget:

1
winget install --id Microsoft.Windows.PackageManager

或者直接从Microsoft Store搜索并安装”App Installer”。

2. 使用Winget安装

搜索软件:

1
winget search <软件名称>

安装软件:
1
winget install <软件包ID>

例如,安装Visual Studio Code:
1
winget install --id Microsoft.VisualStudioCode

自定义安装路径

Windows 11 系统已经自带了 winget;winget 安装的包的位置通过 -l 选项指定,例如:

1
winget install JanDeDobbeleer.OhMyPosh -l "E:\Program_Files\winget\OhMyPosh"

参考
windows - How to specify winget installation folder - Super User

3. 查找软件

1. 命令行查询:

打开PowerShell或命令提示符,输入以下命令来搜索软件包:

1
winget search <关键词>

<关键词> 替换为你想查找的软件名或相关词汇,这将列出所有与关键词匹配的软件包。

2. Web 界面:

虽然Winget主要通过命令行操作,但你也可以访问Windows Package Manager Gallery的GitHub仓库,浏览可用的软件清单。

Scoop

Scoop 是一个开源的命令行包管理器,由社区维护,专为Windows设计。它允许用户轻松地安装命令行工具、应用程序和实用程序。Scoop的独特之处在于它能够智能地处理依赖关系,并且可以在非管理员账户下运行。Scoop的应用存储库不仅包含传统的Windows应用,还大量集成了各种命令行工具和开发工具,非常适合开发者使用。它还能从GitHub等源头安装软件的特定版本,灵活性较高。

1. 安装Scoop

打开PowerShell(不必以管理员身份运行),然后执行以下命令:

1
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')

这将会自动下载并安装Scoop。

2. 使用Scoop安装软件

搜索软件:

1
scoop search <软件名称>

安装软件:
1
scoop install <软件桶>.<软件名>

例如,安装Git:
1
scoop install main.git

自定义安装路径

在 PowerShell 中执行

1
2
3
4
5
$env:SCOOP='E:\Program_Files\scoop'
[Environment]::SetEnvironmentVariable('SCOOP',$env:SCOOP,'User')
$env:SCOOP_GLOBAL='E:\Program_Files\scoop-apps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

前两行设置 scoop 本身的安装位置,3~4 行设置 scoop 安装的包的位置,最后一行安装 scoop。

注意:所指定的路径必须存在,若不存在应手动创建,然后以管理员身份运行 PowerShell。例如,执行

1
scoop install -g neovim-nightly

显示

1
2
3
4
5
6
7
8
9
10
11
Installing 'neovim-nightly' (0.7.0-dev-1356-g75ff156d9) [64bit]
Loading nvim-win64.zip from cache
Checking hash of nvim-win64.zip ... ok.
Extracting nvim-win64.zip ... done.
Linking E:\Program_Files\scoop-apps\apps\neovim-nightly\current => E:\Program_Files\scoop-apps\apps\neovim-nightly\0.7.0-dev-1356-g75ff156d9
Creating shim for 'nvim'.
Adding E:\Program_Files\scoop-apps\shims to global path.
Creating shim for 'nvim-qt'.
Creating shortcut for Neovim (nvim-qt.exe)
'neovim-nightly' (0.7.0-dev-1356-g75ff156d9) was installed successfully!
'neovim-nightly' suggests installing 'extras/vcredist2022'.

成功安装在指定位置:

参考
Quick Start | Scoop (scoop-docs.vercel.app)

3. 查找软件

1. 命令行查询:

在PowerShell或命令提示符中,运行:

1
scoop search <关键词>

同样,用你想找的软件关键词替换 <关键词>,以查看匹配的软件列表。

2. Web 界面:

Scoop有一个非官方的软件仓库浏览器,如Scoop Bucket List,可以帮助你在线浏览可用的软件包。

Chocolatey

Chocolatey 是Windows上最早的包管理器之一,也是最受欢迎的之一。它同样通过命令行操作,能够快速安装Windows软件包、工具和库。Chocolatey支持广泛的软件库,用户可以安装从办公软件到开发工具的各类应用程序。它通过自动化软件安装流程,减少用户的手动干预,同时支持批量安装,非常适合IT专业人士进行系统部署和维护。Chocolatey也允许用户创建自己的软件包,增加了软件分发的便利性。

1. 安装Chocolatey

打开管理员模式的PowerShell或CMD,然后执行以下命令:

1
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

这将安装Chocolatey。

2. 使用Chocolatey安装软件

搜索软件(需要先安装chocolatey-list工具):

1
choco search <软件名称>

安装软件:

1
choco install <软件名称>

例如,安装Google Chrome:
1
choco install googlechrome

自定义安装路径

首先,从很久以前开始,Chocolatey Pro 版本和 Chocolatey Business (C4B) 版本就可以任意指定安装位置,这一功能参考

Chocolatey Software Docs | Ubiquitous Install Directory Option (Pro+)

Chocolatey 自定义安装路径

添加的选项为:

1
2
3
4
5
6
7
--dir, --directory, --installdir, --installdirectory, --install-dir, --install-directory=VALUE
Install Directory Override - Override the default installation director-
y. Chocolatey will automatically determine the type of installer and
pass the appropriate arguments to override the install directory. The
package must use Chocolatey install helpers and be installing an
installer for software. Available in 0.9.10+. [Licensed editions](https://chocolatey.org/compare) only.
See https://docs.chocolatey.org/en-us/features/install-directory-override

对于 Chocolatey Free 版本,参考

Chocolatey Software Docs | Setup / Install

安装前在 PowerShell 中执行

1
2
3
$env:ChocolateyInstall='E:\Program_Files\Chocolatey'
[Environment]::SetEnvironmentVariable('ChocolateyInstall',$env:ChocolateyInstall,'Machine')
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

前两句指定 Chocolatey 本身的安装位置,最后一行安装 Chocolatey。若不指定,则 Chocolatey 的默认安装位置是 %PROGRAMDATA%\Chocolate(即 %SystemDrive%\ProgramData\Chocolatey,自 0.9.8.24 版本起)。不建议指定为 C:\Chocolatey,这是旧版的默认安装位置。在安装前应手动创建安装路径文件夹(若不存在)。安装完成后若有相关提示,应执行

1
notepad $PROFILE

使用记事本打开 C:\Users<username>\Yihua\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 (若不存在则需手动创建文件夹和文件),添加

1
2
3
4
$ChocolateyProfile = "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
if (Test-Path($ChocolateyProfile)) {
Import-Module "$ChocolateyProfile"
}

然后执行

1
. $PROFILE

刷新 PowerShell 配置即可。在安装了 Chocolatey 后可以使用

1
refreshenv

命令刷新当前 session/会话 的环境变量。此后在设置->系统->关于->高级系统设置->环境变量中可以看到 ChocolateyInstall 环境变量已经被添加为系统变量。

Chocolatey 安装的包的位置在 $ChocolateyInstall\lib,也就是说之前手动设置了 ChocolateyInstall 环境变量后 Chocolatey 安装的包的位置同样会改变,例如执行

1
choco install chocolateygui

后可以看到 ChocolateyGUI 被安装到 E:\Program_Files\Chocolatey\lib 下(chocolateygui.exe 和 chocolateyguicli.exe 在 E:\Program_Files\Chocolatey\bin 下)。然而,参考

Chocolatey Software Docs | Getting Started

Chocolatey Software Docs | Getting Started

以及

Chocolatey Software Docs | FAQs

有些包是基于 Windows Installer 的 MSI 文件的(例如 ruby 和 neovim),会被安装到 Program Files 下,可以通过手动指定 MSI 安装选项 -ia “INSTALLDIR=””D:\Program Files”””(CMD)来指定安装位置,参考 Chocolatey Software Docs | Install 给出的安装选项

1
2
3
--ia, --installargs, --install-args, --installarguments, --install-arguments=VALUE
InstallArguments - Install Arguments to pass to the native installer in
the package. Defaults to unspecified.

NSIS 安装包也可以,例如安装 Notepad++:

1
choco install notepadplusplus.install -ia "'/D=E:\SomeDirectory\somebody\npp'"

还有的则会被安装到 $env:ChocolateyBinRoot 下,这一环境变量若为手动指定则默认为 C:\tools。例如,Neovim 就将被安装到 C:\tools\neovim。执行

1
2
3
4
5
$env:ChocolateyBinRoot='E:\Program_Files\Chocolatey-apps'
[Environment]::SetEnvironmentVariable('ChocolateyBinRoot',$env:ChocolateyBinRoot,'Machine'
$env:ChocolateyToolsRoot='E:\Program_Files\Chocolatey-apps'
[Environment]::SetEnvironmentVariable('ChocolateyToolsRoot',$env:ChocolateyToolsRoot,'Machine')
choco install neovim --pre

前四行添加环境变量(根据文档,$ChocolateyToolsRoot 环境变量将取代 $ChocolateyBinRoot 环境变量),最后一行安装包。注意:所指定的路径同样必须已存在,若尚未存在需提前手动创建。但是将上述两个环境变量都设置好后,有些包仍然是安装在 C:\tools 下的,偶然间发现环境变量中的用户变量有一个变量名为 ChocolateyToolsLocation,其值为 C:\tools,将其值改为自己想指定的目录即可。

3. 查找软件

1. 命令行查询:

打开管理员权限的PowerShell或命令提示符,执行:

1
choco search <关键词>

通过关键词搜索软件包。

2. Web 界面:

访问Chocolatey Gallery,这是一个官方网站,列出了所有可通过Chocolatey安装的软件包,你可以直接在网页上浏览和搜索。

参考文章

评论