前情
前段时间用于生产办公的机器突然出现毛病,更新Windows 10系统总是出现问题,更新驱动,既不提示成功,也不提示失败,还伴随着偶然的绿屏,迫不得已,动了重装系统的念头,既然要重装系统,那就得考虑一下代价,毕竟是用于工作,所以呢,如何以最快的方式把工作中用到的开发环境和软件安装好,就成了我主要思考的问题。想到以前安装软件基本都是从各自的官网进行下载安装,这样的话估计要花个一天时间在这上面,要是能有什么办法能够像Linux上的包管理器一样方便的话就太好了!!!
windows 10系统重置
设置 - 更新和安全 - 恢复 - 重置此电脑,有保留我的文件和删除所有内容两个选项。
- 保留我的文件,代表如果软件安装在C盘其他目录的话,该目录不会被删除,但部分软件的安装有配置环境变量和注册表,手动配置这些的话不亚于重新安装该软件。
- 删除所有内容,代表C盘里面的内容将全部会被删除。
软件包管理器
关于执行策略
先使用powershell查看脚本执行策略Get-ExecutionPolicy
,如果返回的结果是Restricted
的话,请执行修改Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Chocolatey
chocolatey 是一款在Windows上基于NuGet的包管理器工具,choco操作简单,自动安装软件,支持超过7000款软件,支持GUI图形化界面,分为开源、个人许可证、企业用户三种版本。自定义程度低,修改需要管理员权限,安装速度慢,部分使用需要挂梯子,偶尔安装失败,软件默认安装在对应软件的默认的路径下面,开源版本不支持修改默认安装目录。
安装及使用
# 安装
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# 使用
choco list 列出安装包
choco list -l 列出本地安装好的包
choco search [package] 搜索包
choco install [package] 安装包
choco uninstall [package] 卸载安装包
choco upgrade [package] 升级安装包
choco pin [package] 固定包的版本,防止被升级
更多使用方法可以通过choco -?/-help查询
Scoop
scoop 免费开源,下载路径放置在github上面,能否访问看缘分,安装软件速度依赖于访问github的速度,scoop自定义程度高,扩展性强,可自定义安装路径,由社区维护。
安装及使用
# 安装
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# 简短方式安装:iwr -useb get.scoop.sh | iex
# 使用
Usage: scoop <command> [<args>]
# 可用命令
alias Manage scoop aliases # 管理指令的替身
bucket Manage Scoop buckets # 管理软件仓库
cache Show or clear the download cache # 查看与管理缓存
checkup Check for potential problems # 做个体检
cleanup Cleanup apps by removing old versions # 清理缓存与旧版本软件包
config Get or set configuration values # 配置Scoop
create Create a custom app manifest # 创建自定义软件包
depends List dependencies for an app # 查看依赖
export Exports (an importable) list of installed apps # 导出软件包列表
help Show help for a command # 显示帮助指令
hold Hold an app to disable updates # 禁止软件包更新
home Opens the app homepage # 打开软件包主页
info Display information about an app # 显示软件包信息
install Install apps # 安装软件包的指令
list List installed apps # 列出所有已安装软件包
prefix Returns the path to the specified app # 查看软件包路径
reset Reset an app to resolve conflicts # 恢复软件包版本
search Search available apps # 搜索软件包
status Show status and check for new app versions # 查看软件包更新状态
unhold Unhold an app to enable updates # 启动软件包更新
uninstall Uninstall an app # 卸载软件包的指令
update Update apps, or Scoop itself # 更新软件包
virustotal Look for app hash on virustotal.com # 查看哈希值
which Locate a shim/executable (similar to 'which' on Linux) # 查看可执行程序路径
WinGet
版本2004已经内置winget命令,winget是微软官方出品,目前还在preview阶段,且 支持的最低版本是 Windows 1709,安装速度取决于访问github的速度,且暂时无法通过winget命令行卸载软件,有三种安装方式,
- 加入Windows 10 Insider,并下载安装 Windows Insider 版本的系统
- 通过官方注册通道来将自己加入 WinGet Preview flight ring
- 直接去WinGet的官方GitHub仓库,在Release页面手动下载 WinGet 的安装程序进行手动安装。
# 使用
winget [<命令>] [<选项>]
# 可用命令
install # 安装给定的程序包
show # 显示有关程序包的信息
source # 管理程序包的来源
search # 查找并显示程序包的基本信息
hash # 哈希安装程序的帮助程序
validate # 验证清单文件
settings # 打开设置
features # 显示实验性功能的状态
总结
chocolatey、scoop、winget三者的共同点,开源、使用方式大体一致,依赖梯子网速的快慢,解决了需要前往软件官网下载的问题,缺少稳定的国内镜像,以管理员方式运行的窗口安装时不需要授权,能够做到一键安装。
三者不同点 | chocolatey | scoop | winget |
---|---|---|---|
维护团队 | 商业团队和社区 | 社区 | microsoft官方和社区 |
能否自定义安装目录 | 开源版本不能 | 能 | 不能 |
索引更新 | HTTP 在线 | GIT 增量缓存 | HTTP 全量缓存 |
支持第三方源 | 支持 | 支持 | 暂不支持 |
搜索速度 | 慢 | 慢,依赖bucket数量 | 快 |
可扩展性 | 弱 | 强 | 弱 |
国产软件收录情况 | 少 | 少 | 中等 |
能否卸载 | 能 | 能 | 不能 |
绝大多数开发环境和软件都能使用这三款包管理器进行下载安装,也就是说不管选择哪一个,都能很舒适的进行管理。那么到底该怎么选呢?在 梯子 网速良好的前提下,如果不需要自定义安装的话,选择chocolatey能够满足需求,如果对定制化有要求的话,在scoop内置和推荐的bucket之外,创建属于自己的存储库是一个不错的方案,winget是未来的趋势,当前还处于官方的开发计划中,可以持续观望。如果喜欢折腾的话,推荐使用scoop。
manifests清单(软件列表)
评论 (0)