Windows 系统的包管理器

如果使用过Linux的话,一定会被其简洁的软件包管理系统所折服。在Linux世界中,安装一个软件不需要在浏览器中寻找软件的官网,然后将其下载下来,然后双击进行安装。只需要一条简单的命令,就可以完成搜索、安装、更新、卸载等所有操作

Debian / Ubuntu 下有 apt-get

Fedora 下有yum / dnf

Arch 下有pacman

Mac 下有 Homebrew + iTerm 2 + Fish shell

Windows 下 Chocolatey / Scoop + Cmder

国外有人把 Windows 下主流的包管理工具做了一个对比,分别列出了各自的优缺点,还有很多人投票,网站链接: What are the best Windows package managers?

Chocolatey

官网号称 Chocolatey 是在 Windows 上管理软件的明智方式,轻松管理 Windows 软件的各个方面(安装,配置,升级和卸载)。其他介绍请看官网:https://chocolatey.org/

Chocolatey 安装

Chocolatey 的安装要求用户系统至少是 Windows 7 以上或者 Server 版本 2003 以上,PowerShell 至少是 v2 以上。还需要 .NET Framework 4+,不过在安装 Chocolatey 前会自动检查,如果没有就会自动安装。
Chocolatey 可以通过两种方式安装:使用 cmd.exe 来安装和使用 PowerShell.exe 来安装。安装的具体事项可以看官网的 Install

使用 cmd.exe 方式安装

建议优先使用此方式安装,因为 cmd.exe 安装过程没有其他操作步骤。打开 CMD 命令行,然后输入如下命令:

1
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

注意:如果安装失败,安装过程报错,报错信息如下:

1
Installation of Chocolatey to default folder requires Administrative permissions. Please run from elevated prompt.

上面这个错误产生的原因是因为没有以管理员身份启动 cmd.exe。如何以管理员身份启动 cmd.exe 请自行搜索,这里就不再啰嗦了

使用 PowerShell.exe 方式安装

如果 cmd.exe 方式安装不成功再尝试这种方式, PowerShell.exe 安装过程会有安全性提示,要输入命令来确认。打开 PowerShell 命令行,然后输入如下命令:

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

安装过程可能会有安全性提示,按照提示来操作就行了

使用Win + R 快捷键,接着输入cmd然后回车打开 CMD,输入 powershell 然后回车打开 PowerShell。如果安装报错,也有可能跟第一种安装方式一样是因为没有使用管理员身份运行 PowerShell 的原因。默认以管理员身份启动 PowerShell 的设置可以参考 让PowerShell控制台默认以管理员启动

常用命令

1
2
3
4
5
6
7
choco -h                       # 查看帮助
choco <command> -h #查看相应命令的帮助
choco install <package name> #安装软件包
choco search <keyword> #搜索软件包,会列出跟关键字相关的所有软件包
choco upgrade <package name> #升级软件包
choco uninstall <package name> #卸载软件包
choco list --local-only #查看本地安装的软件包

更多命令请参考 Command Reference

注意:choco list 命令查看的是所有软件包,包括本地已安装和远程存在的软件包,所以这个命令执行很耗时。一般我们查看的都是本地已安装的软件包,所以要加上 --local-only 参数,如果要查看远程的软件包,直接使用 choco search 搜索指定软件包

常用软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
choco install googlechrome #安装 Chrome 浏览器
choco install autohotkey.portable #安装 AutoHotKey
choco install ccleaner #安装清理工具
choco install visualstudiocode #安装 VS Code
choco install conemu #安装ConEmu
choco install sourcetree #安装SourceTree
choco install winrar #安装压缩软件
choco install android-sdk #安装 Android SDK
choco install git #安装Git
choco install jdk8 #安装jdk8
choco install nodejs #安装Node.js
choco install virtualbox #安装虚拟机
choco install vim #安装 Vim
choco install docker #安装Docker
choco install wget #安装Wget
choco install dropbox #安装 Dropbox
choco install tortoisesvn #安装 TortoiseSVN

你所能想到的 Windows 上常用的软件差不多都能找到,想要找什么软件,直接使用 choco search <keyword> 用关键字搜索,如果不知道自己想要啥软件或者记不起来要装啥软件,可以去官网的 Packages 页下找找,几千个软件包,慢慢找去吧

Scoop

Scoop 是 Windows 上的命令行安装程序,主要针对命令行下的开发者工具,和程序员更配哦。关于 Scoop 的更多介绍请看官网:http://scoop.sh/ ,同时,Scoop 是开源的项目,仓库地址点这里

Scoop 安装

Scoop 的安装要求 Windows 上安装的 PowerShell 版本至少的 PowerShell 3,而且必须为你的用户帐户启用 PowerShell 。Windows 10 或 Windows Server 2012 应该默认安装的是 PowerShell 3,但 Windows 7 和Windows Server 2008 可能是比较老的版本

升级 PowerShell

如果是 Windows 7 系统可能需要升级一下 PowerShell,有两种方式可以升级:一是直接下载 PowerShell 3 的安装包,二是通过 Chocolatey 升级。推荐使用第二种方式,下面重点介绍一下第二种方式的升级方法。
首先安装 Chocolatey , 安装方法见上文。使用 choco search powershell 命令只搜索到 PowerShell 4 和 PowerShell 5。虽然在官网 Packages 上搜索到了 PowerShell 3,但是好像没通过审核,而且我强行安装失败,最后我直接安装的 PowerShell 5,在 PowerShell 命令行下输入如下命令:

1
choco install powershell  #默认安装的最新版

安装过程需要同意,提示 Do you want to run the script?([Y]es/[N]o/[P]rint): 时,输入y就行了。

提示:可以使用 Get-Host 命令查看 PowerShell 版本,安装完后需要重启电脑,新版 PowerShell 才能生效

开始安装 Scoop

安装 Scoop 前需要确保你已经允许 PowerShell 执行本地脚本,执行如下命令:

1
set-executionpolicy remotesigned -scope currentuser

执行这个命令时可能会提示:

1
2
Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):

输入 y 或者 a 就可以了。接下来开始安装 Scoop,执行如下命令:

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

常用命令

1
2
3
4
5
scoop install 7zip #安装压缩软件
scoop install git #安装Git
scoop install openssh #安装OpenSSH
scoop install concfg #安装控制台配置文件导入导出工具
concfg import solarized small #导入 Solarized 主题

其实只需要记住 scoop help 这一个命令就行了,其他命令忘记了直接通过这个命令查看就行了

常用软件

1
2
3
4
5
scoop install 7zip #安装压缩软件
scoop install git #安装Git
scoop install openssh #安装OpenSSH
scoop install concfg #安装控制台配置文件导入导出工具
concfg import solarized small #导入 Solarized 主题

上面的四条命令可以合并成一个命令 scoop install 7zip git openssh concfg 支持的更多软件看这里:https://github.com/lukesampson/scoop/tree/master/bucket

Scoop VS Chocolatey

Scoop 和 Chocolatey 不同的地方在于下面几点:

  1. 独立安装,和已有软件不冲突
  2. 没有权限对话框,因为程序安装到用户目录
  3. 不会污染路径
  4. 不使用 NuGet,无需担心依赖
  5. 不是软件包管理器,它仅读取一个关于如何安装程序的 JSON
  6. 不安装特定版本,仅仅支持最新版本
  7. 专注于开发者的工具

更多请参考 Chocolatey Comparison

一键装机

当你在一台电脑上用 Chocolatey 和 Scoop(非程序员可以不装 Scoop) 配置过一次工作环境后,你只需要记住你所使用的软件包的名称,然后将所有的安装命令的清单云同步,那么当你换电脑了就可以很轻松的同步工作环境的配置,非常便捷。我的命令清单如下:

1
2
3
4
5
6
7
8
9
10
11
#使用 Chocolatey 安装
choco install googlechrome #安装 Chrome 浏览器
choco install unity #安装最新版 Unity3D 游戏引擎
choco install visualstudiocode #安装 VS Code
choco install jdk8 #安装jdk8
choco install android-sdk #安装 Android SDK

#使用 Scoop 安装
scoop install concfg git #安装 concfg、git 等
scoop install cmder-full #安装 cmder
scoop install pshazz #安装自定义提示和具有 Git&SSH 特性的插件