Scoop 是一款基于命令行的 Windows 软件安装器(A command-line installer for Windows)。相对于资源更丰富的 Chocolatey 来说,Scoop 对权限要求低,对环境污染少,更开放,更适合安装各种命令行工具软件;而 Chocolatey 更适合安装 GUI 软件,特别是与系统关联紧密(需UAC权限等)的 GUI 软件。

安装 Scoop

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 设置环境变量
$env:SCOOP='D:\scoop'
$env:SCOOP_GLOBAL='D:\Apps'

# 设置用户安装目录(默认 %USERPROFILE%\scoop)
# 设置全局安装目录(默认 C:/ProgramData/scoop 需要管理员权限)
[environment]::setEnvironmentVariable('SCOOP',$env:SCOOP,'User')
[environment]::setEnvironmentVariable('SCOOP_GLOBAL',$env:SCOOP_GLOBAL,'Machine')

# 确认安装环境
$psversiontable.psversion.major  # should be >= 5.0
Set-ExecutionPolicy RemoteSigned -scope CurrentUser  # Y 允许执行本地脚本

# 执行安装脚本
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') # or
iex (new-object net.webclient).downloadstring('https://get.scoop.sh') # or
iwr -useb get.scoop.sh | iex

使用 Scoop

Scoop 通过读取 bucket 中的 JSON 描述文件来安装软件及其依赖,bucket 为 Scoop 提供了软件源。Scoop 安装后自带 main bucket,支持安装很多命令行工具软件。通过添加 extra bucket 和第三方 bucket,还可以安装很多 GUI 软件。

不建议使用 Scoop 安装需要 UAC 或与系统关联密切的 GUI 软件,可以使用 Scoop 安装可以安装到任意位置的“绿色”软件。Scoop 将程序的 shims 集中放在一个文件夹中统一管理,并将其添加至环境变量。Scoop 还可以安装程序的某个特定版本并可以在版本间切换。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
scoop help

scoop list
scoop search ssh

scoop info typora
scoop home typora

scoop install curl
scoop install curl@7.56.1

# 检查
scoop checkup
scoop status

# 更新
scoop update        # 更新 scoop 与 bucket
scoop update *      # 更新 scoop 及所有 APP
scoop update <app>  # 更新特定APP
scoop update <app> -g

# 添加 bucket
scoop bucket known
scoop bucket add extras
# 添加第三方 bucket (常用: extras, java, dorado)
scoop bucket add <name-of-bucket> <location-of-git-repo>
scoop install <bucket>/<app>  # 安装指定 bucket 中的 app

# 为所有用户安装
scoop install -g <app>
# 涉及全局和 UAC 还是使用 choco 或官网下载安装
# 比如 docker, chrome, steam ...

# 网络与代理
scoop config aria2-enabled false  # 禁用aria2
scoop config proxy 127.0.0.1:1080
scoop config rm proxy

版本切换

1
2
3
4
scoop bucket add versions
scoop install python27 python
scoop reset python27
scoop reset python

创建 bucket

  1. 建立一个 Git repo

  2. 添加应用到你的 bucket

1
2
3
4
5
6
git clone https://github.com/<your-username>/my-bucket
cd my-bucket
'{ version: "1.0", url: "https://gist.github.com/lukesampson/6446238/raw/hello.ps1", bin: "hello.ps1" }' > hello.json
git add .
git commit -m "add hello app"
git push
  1. 添加你创建的 bucket
1
scoop bucket add my-bucket https://github.com/<your-username>/my-bucket
  1. 确认 bucket 工作正常
1
2
3
4
scoop bucket list  # -> you should see 'my-bucket'
scoop search hello  # -> you should see hello listed under, 'my-bucket bucket:'
scoop install hello
hello  # -> you should see 'Hello, <windows-username>!'
  1. 分享你的 bucket

删除与卸载

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 清理缓存
scoop cleanup *
scoop cleanup <app>

# 卸载安装的软件
scoop uninstall <app>
scoop uninstall <app> -g  # 卸载全局应用
scoop uninstall <app> -p  # 同时移除配置文件

# 卸载 Scoop 自身
scoop uninstall scoop

# 删除 Scoop 软件目录
del %USERPROFILE%/scoop -Force

参考资料

https://github.com/lukesampson/scoop/wiki