Windows之应用安装程序 —— winget
大家都用过Linux中的应用程序安装工具,如yum、apt、rpm等工具进行安装自己想要的一些工具或则软件之类的,当然Linux操作系统还是很强大的有很多类似的命令来安装我们所需要的程序,但是windwos有没有类似于windows这样的应用安装程序呢?想必大家看标题就能看的出来肯定是有的,那就是微软提供的winget官网提供的名称叫应用安装程序又叫windows程序包管理器,今天我们就来说一说这个windows版的命令程序安装工具,这个工具对于大家来说还是很合谐的,使用也是非常简单和Linux中的安装程序的工具很类似,只不过windows操作系统更注重于图形化操作,所以很少有人去注意或者关注命令行中的一些操作,这个也和windows操作系统闭源有很大一部分关系的,好了废话不多说了我们开始我们的winget之旅吧!
简介
winget是一个综合的程序包管理器解决方案,由一个命令行工具和一组用于在 windwos上安装应用程序的服务组成。
winget是一个用于自动安装、升级、配置和使用软件的系统或工具集。 大多数程序包管理器都是设计用于发现和安装开发人员工具。开发人员使用程序包管理器来指定先决条件,这些先决条件适用于为给定项目开发解决方案所需的工具。 然后,程序包管理器就会按照声明性说明来安装和配置这些工具。 程序包管理器可减少准备环境所需的时间,并有助于确保在计算机上安装相同版本的程序包。
除了上面说的微软还面向ISV(独立软件供应商)提供软件仓库,ISV可以将自己的工具或者应用程序的软件包上传到软件仓库,这个就类似于163源码包一样,不过在Linux中是任何人都可以做这个源码包仓库的,但在windows中就会出现类似于手机中的应用商城一样,自己有自己独家的软件包仓库并不统一,举个栗子:比如说我在小米商城里面没有办法下载华为商城里面的一些程序一样;这个算是微软的一个弊端吧,但是好处就是有一个统一的软件包仓库这样也是绝对安全的,接着来说这个软件仓库,这个软件仓库是微软在github中开通的一个仓库,可以提供用户下载程序和上传自己的应用程序。
安装
默认情况下winget对于win10或者win11的用户来说是不用自行安装的,是微软将此程序打包到windwos镜像中的,只要你安装好默认就会有的。可能部分版本也会出现没有的情况不过也没有关系,也可以额外进行安装的,下面我们就来说说如何进行安装。
方式一:Microsoft Store商城安装
win10以上版本微软都会提供一个Microsoft Store商城的这样一个软件,这个是微软方便用户进行安装一些应用程序的,不过没有也没有关系,大家可以参考我下面的方式二进行安装。
Microsoft Store商城中安装winget步骤很简单的,只需要打开Microsoft Store商城搜索winget或者应用安装程序,搜索出来第一个就是,点击进行下载安装就可以了,Microsoft Store商城有一个很方便的地方就是他直接就是静默安装不需要你再去点很多下一步去完成安装操作了,下面是Microsoft Store商城搜索winget的截图。

方式二:官网安装
第二种方式就从微软官网上去下载安装包,下载完成手动进行安装,这个适用于所有用户哦
winget下载地址:https://apps.microsoft.com/store/detail/%E5%BA%94%E7%94%A8%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8F/9NBLGGH4NNS1?hl=zh-cn&gl=cn
浏览器中输入上面网址打开就可以免费下载了

安装的时候需要注意的是可能需要获取你的管理员权限,建议大家右键管理员权限进行运行。
使用
使用的话也比较简单首先使用win + r快捷键调出运行窗口,在窗口中输入cmd,然后敲击回车你就会得到一个命令行窗口,winget的命令在这里就可以输入使用的,由于执行部分winget命令时需要管理员权限,建议使用管理员权限运行cmd命令行窗口。


管理员权限运行:
输入win快捷键同样输入cmd,然后找到cmd命令提示符右键以管理员身份打开即可这样你就获得了一个拥有管理员权限的命令行工具,这里是window的一个弊端,不像linux一样可以sudo直接以管理员权限执行,只能以管理员方式打开

1.安装程序
winget install 软件包名称

上面截图是我安装了一个相应的程序,安装过程中会让你确认并同意软件厂商所提供的相关协议,这里你只需要输入y就可以了,他会先进行下载下载完成后启动安装程序,这个时候部分软件是有弹窗的,需要让你确认一些安装步骤之类的,基本很少,提示已成功安装就代表安装成功了,你可以使用命令来运行你安装的程序或者去开始菜单里面找你所安装的程序双击打开即可
2.卸载程序
卸载程序建议大家先把已安装的程序列出一下然后再进行卸载,除非你完全知道所需要卸载程序的名字,这个名字必须是完整的才可以,这一点微软做的就有点坑了,有时候还需要加上版本号
winget list //列出已安装的所有程序除系统所需程序或补丁包

列出之后我们就可以看到所有已安装的程序了,可以按照名称去查找一下,看看你所需要的卸载的程序名称或者ID,然后进行卸载就可以了
winget uninstall 名称/ID

首先他会先查找这个你所输入的程序名称或者ID是否存在,存在的话会启动程序包卸载程序来进行卸载,显示卸载成功就表示已经卸载成功了。
3.查找软件
在安装程序之前你可以先使用search来查找下你所要安装的程序在微软仓库中有没有相应的安装包,有的话你可以直接安装,没有那就需要你去软件官网下载安装程序再来进行安装。
winget search 软件名称

上面截图里面是我想安装一个nginx,搜索之后是有的,但是这个软件包大家一定看清楚,他并不是一个nginx,只是nginx的一个替程序,他是一个WAMP,大家可以看下下面的截图,最终会安装一个laragon-wamp的程序

所以说现在微软的安装包仓库里面程序并不是很全,大部分还是需要你去官网下载程序然后再来进行安装的,不过可以推荐类似的软件其实也是个很不错的功能,不像linux一样没有就是没有

上面我又搜索了一个xmind的工具,他竟然真的有,很让人意外的
4.查看可以升级的程序并进行升级
winget upgrade //查看那些有最新的软件可以进行升级

显示出来的都是可以升级的软件了,下面同样可以使用upgrade来进行升级软件
winget upgrade 软件包名称/ID

这样就升级好啦。
命令及参数
上面就是说了一些简单的例子,也是最常用的下面我们来具体说说每个命令所包含的参数之类的
1. export
export是一个导出当前应用的一个命令,可以把你电脑上的当前应用环境进行导出,导出后可以放到其他的电脑然后使用import进行导入,大部分用于还原环境使用,更适合开发人员使用,个人的话基本上没啥用,除非换电脑了要把程序啥的换到新电脑上,注意不是导出软件安装包哦。他导出的是一个json文件,下面来看看他的参数吧和使用方法吧
winget export 参数 //导出命令
参数:
| 参数 | 说明 |
|---|---|
| -o,–output | 要导出json文件的路径及名称 |
例子:
winget export -o \opt\abc.json

对了忘记说一个前提了,大家也在上面截图里面看到了,因为这些程序都是我之前图形化安装的所以他是找不到安装源的,这样就会导不出来的,这一点很不友好
选项:
来看看export的选项有哪些吧
| 选项 | 说明 |
|---|---|
| -s,–source | 选择导出从哪个源安装的,他的可选项有两个一个是msstore和winget |
| –include-versions | 指定当前应用的版本 |
| –accept-source-agreements | 接受开源许可协议,这个就是为了避免提示你要不要接受 |
| –verbose-logs | 设置并创建详细的日志 |
除了从旧版windows上导出之外,你还可以手动去编写json文件哦,json文件内容也比较简单只有4块内容:
1.源:是指的你即将安装的程序源仓库是在哪里
2.包:是指的你所需要安装的程序集
3.标识符:用于指定包的 Windows 程序包管理器包标识符
4.版本:你所要安装程序的版本号
2. import
和import相对应得,是为了导入要安装的应用json文件,使用import可以批量进行安装程序啦
winget import 参数
参数:
| 参数 | 说明 |
|---|---|
| -i,–import-file | 指定要安装程序的json文件路径 |
例子:
winget import -i c://demo/myfiles1.json

选项:
| 选项 | 说明 |
|---|---|
| –ignore-unavailable | 所安装的程序不可用的时候不提示错误 |
| –ignore-versions | 忽略json中所写的版本号,可以安装最新版本 |
| –accept-source-agreements | 用于跳过接受源协议 |
| –accept-package-agreements | 用于跳过接受协议 |
| –verbose-logs | 生成详细日志 |
3. install
install用来安装应用程序
winget install 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:
winget install -q 软件包名称

选项:
| 选项 | 说明 |
|---|---|
| -m,–manifest | 用于指定本地安装清单需要时YMAL文件 |
| –id | 指定程序ID进行安装 |
| –name | 安装时搜索现在为按名称进行搜索对应安装,有多个会列出让你选择进行重新执行命令 |
| –moniker | 按名字对象来进行搜索对应程序进行安装 |
| -v,-version | 指定版本号进行安装,不指定则安装最新版 |
| -s,–source | 用于指定安装源仓库 |
| –scope | 选择安装到哪里,可以是计算机也可以是某个用户 |
| -a,–architecture | 选择要安装的体系结构 |
| -e,–exact | 使用精准匹配进行安装 |
| -i,–interactive | 进行交互式安装,但是有些程序为静默安装不可用 |
| -h,–silent | 选择静默安装,所有选择将为默认值 |
| –locale | 要使用的区域设置(BCP47 格式),这个参数一直没弄明白,理解不了 |
| -o,–log | 选择安装日志存放位置 |
| –override | 覆盖待传递的参数至安装程序 |
| -l,–location | 设置安装路径 |
| –force | 覆盖安装程序哈希检查 |
| –dependency-source | 如果需要安装依赖包时,指定依赖包安装的源仓库 |
| –accept-package-agreements | 接受所有许可协议 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
| –accept-source-agreements | 接受所有源协议 |
| -r,–rename | 要重命名可执行文件的值 |
4.list
用于列出已安装的程序
winget list 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:
winget list -q Edge

选项:
| 选项 | 说明 |
|---|---|
| –id | 按照ID进行筛选 |
| –name | 按照名称进行筛选 |
| –moniker | 按照名字对象机械能筛选 |
| -s,–source | 指定安装源进行筛选 |
| –tag | 按照标签进行筛选 |
| –command | 按命令进行筛选,相对于linux的which |
| -n,–count | 指定显示数量 |
| -e,–exact | 用于精准匹配 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
| –accept-source-agreements | 接受所有开源协议 |
5.serch
用于查找所需要的安装程序,可以用来判断仓库是否有这个程序,或查看程序的相关信息
winget search 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:

选项:
| 选项 | 参数 |
|---|---|
| –id | 按照ID进行查找程序 |
| –name | 按照名称进行查找程序 |
| –moniker | 按照名字对象来查找程序 |
| -s,–source | 指定仓库来查找程序 |
| –tag | 按照标签来查找程序 |
| –command | 按照命令来查找程序 |
| -n,–count | 指定列出几行数据 |
| -e,–exact | 使用精准匹配程序 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
| –accept-source-agreements | 接受所有开源协议 |
6.show
用于查看应用程序的详细信息
winget show 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:
winget show -q Edge

选项:
| 选项 | 说明 |
|---|---|
| -m,–manifest | 用于指定本地安装清单需要时YMAL文件 |
| –id | 按照程序ID进行筛选 |
| –name | 按照程序名称进行筛选 |
| –moniker | 按照名字对象进行筛选 |
| -v,–version | 指定版本,默认为最新版 |
| -s,–source | 指定仓库进行筛选 |
| -e,–exact | 进行精准匹配 |
| –versions | 显示程序可用的版本 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
| –accept-source-agreements | 接受所有开源协议 |
7.source
用于管理你的程序仓库,默认微软只提供两个msstore和winget这两个,你可以用source来添加你的源仓库
winget source 子命令 参数
参数:
| 参数 | 说明 |
|---|---|
| -h,–help | 用于查询其他参数或选项 |
子命令:
| 选项 | 说明 |
|---|---|
| add | 添加新的安装来源 |
| list | 列出所有安装来源 |
| update | 更新当前来源 |
| remove | 删除当前来源 |
| reset | 重置当前来源 |
| export | 导出当前来源 |
示例:
winget source list //列出当前来源

winget source update //更新当前来源

winget source reset --force //重置当前来源

这个命令需要管理员才能执行的

8.uninstall
用于卸载已安装的应用程序
winget uninstall 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:
winget uninstall -q 程序名称

选项:
| 选项 | 说明 |
|---|---|
| -m,–manifest | 用于指定本地安装清单需要时YMAL文件 |
| –id | 按照程序ID进行筛选 |
| –name | 按照程序名称进行筛选 |
| –moniker | 按照名字对象进行筛选 |
| -v,–version | 指定版本,默认为最新版 |
| -s,–source | 指定仓库进行筛选 |
| -e,–exact | 进行精准匹配 |
| –versions | 显示程序可用的版本 |
| –accept-source-agreements | 接受所有开源协议 |
| –product-code | 按照指定产品代码来查找 |
| -i,–interactive | 进行交互式卸载 |
| -h,–silent | 进行静默安装 |
| –force | 覆盖安装程序哈希检查 |
| –purge | 删除安装目录中的所有文件 |
| –preserve | 保留安装目录中的所有文件 |
| -o,–log | 指定卸载日志存放位置 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
9.upgrade
用于升级应用程序
winget upgrade 参数
参数:
| 参数 | 说明 |
|---|---|
| -q,–query | 用于搜索包进行查询 |
| -h,–help | 用于查询其他参数或选项 |
示例:
winget upgrade -q 程序名称 //升级所对应的程序

选项:
| 选项 | 说明 |
|---|---|
| -m,–manifest | 用于指定本地安装清单需要时YMAL文件 |
| –id | 按照程序ID进行筛选 |
| –name | 按照程序名称进行筛选 |
| –moniker | 按照名字对象进行筛选 |
| -v,–version | 指定版本,默认为最新版 |
| -s,–source | 指定仓库进行筛选 |
| -e,–exact | 进行精准匹配 |
| -i,–interactive | 进行交互式卸载 |
| –versions | 显示程序可用的版本 |
| -h,–silent | 进行静默安装 |
| –purge | 删除包目录中的所有文件和目录 |
| -o,–log | 指定卸载日志存放位置 |
| –override | 覆盖待传递的参数至安装程序 |
| -l,–location | 指定安装位置 |
| –force | 覆盖安装程序哈希检查 |
| –accept-package-agreements | 接受所有协议 |
| –accept-source-agreements | 接受所有开源协议 |
| –header | 可选的 Windows-Package-Manager REST 源 HTTP 标头 |
| –all | 升级所有可升级的程序 |
| –include-unknown | 即使无法确定其当前版本,也可升级包 |
以上基本上就是比较常用的几个winget的参数或者选项了
总结
来总结下吧也算是一个和linux系统的对比,在我使用的过程中发现用winget安装一些已知的程序的时候还是比较方便的,但是安装微软仓库里面没有的软件的时候就会很麻烦,有时候感觉还不如去官网下载再安装来的更直观更暴力一些,也可能是我刚入门的原因不知道用时间久了会怎么样,既然windows有了winget建议微软仓库的开源程序更多一点,或者网易或者阿里也能有一个winget的开源仓库,这样一个是可用有选择性另外一个就是可以不用再受github下载慢的问题了
最后送给使用win11操作系统的部分用户一个小福利,大家可能很多笔记本电脑在升级完win11后风扇频繁转动的问题,我看网上好多人都提到了升级后风扇转的频繁了,我在官方售后那里了解到是因为win11用的是通用的主板驱动,需要更换驱动,这个方法我试过了但是问题依然存在,安装驱动的方式最后没能帮我解决问题,但是winget帮我解决了,我用winget发现有大量的程序在控制面版已经删除了,但是winget里面还依然存在,我把这些程序和没用不知道干啥的程序卸载之后以外的发现竟然风扇的问题解决了,已经不频繁转动了,可能是加载了太多没用程序的问题也可能是驱动的问题,这个说不清楚,大家如果有同样问题不妨试一试。好啦到这里结束啦
Windows之应用安装程序 —— winget的更多相关文章
- .net Windows服务程序和安装程序制作图解 及 VS 2010创建、安装、调试 windows服务(windows service)
.net Windows服务程序和安装程序制作 最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作 ...
- 制作Windows服务和安装程序(C#版)
http://blog.sina.com.cn/s/blog_5f4ffa170100vt2b.html 1.创建服务项目: 打开VS 2005 编程环境,在C#中新建Windows服务程序 2.将安 ...
- Windows服务程序和安装程序制作
转:http://www.cr173.com/html/15350_1.html 本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建 ...
- 为C# Windows服务添加安装程序
最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻塞系统,不用用户登录之类.哈哈,扯远了,今天讲一下那个怎么给Windows服务做个安 ...
- .net Windows服务程序和安装程序制作图解
最近项目中用到window服务程序,以前没接触过,比较陌生,花了两天的时间学习了下,写了个简单的服务,但在制作安装程序的时候,参照网上很多资料,却都制作不成功,可能是开发环境或项目配置的不同,这里把自 ...
- 使用EXE4J和Inno Setup 编译器将java程序打包成windows桌面应用安装程序
java项目结构如下: Demo是模仿程序快照,主要设计两个按钮:保存快照和恢复快照: 保存快照将对象(窗口)序列化保存下来,后面无论做了什么操作,只要点击恢复快照, 就会读取之前保存的序列化的对象. ...
- (转)为C# Windows服务添加安装程序
本文转载自:http://kamiff.iteye.com/blog/507129 最近一直在搞Windows服务,也有了不少经验,感觉权限方面确定比一般程序要受限很多,但方便性也很多.像后台运行不阻 ...
- 无光驱在32位windows系统下安装64位windows系统
位的系统. 大家都知道,32位的操作系统最多只能支持3.2G的内存,现在内存白菜价,很多人都在原有基础上购入新内存,这样最少也有4G了,为了让内存不浪费,我 们只有升级到64位操作系统.但是很多朋友又 ...
- Windows系统Git安装配置
Git的安装 Git是一个开源的分布式的版本控制软件,是Linus Torvalds 为了方便开源贡献者协同开发和管理 Linux 内核开发替代BitKe而开发的. 打开git官网的下载地址:http ...
- C# VS2010 windows服务的安装
可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间.在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用InstallUtil.exe及其参数.事 ...
随机推荐
- flutter系列之:UI layout简介
目录 简介 flutter中layout的分类 常用layout举例 总结 简介 对于一个前端框架来说,除了各个组件之外,最重要的就是将这些组件进行连接的布局了.布局的英文名叫做layout,就是用来 ...
- PostgreSQL 修改执行计划 GroupAggregate 为 HashAggregate
1.前言 PostgreSQL 聚合算法有两种,HashAggregate and GroupAggregate .我们知道GroupAggregate 需要对记录进行排序,而 HashAggrega ...
- KingbaseFlySync 评估工具的使用
关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java **** 评估工具的使用**** 1.查询评估工具所在服务器的硬件平台(x86_64.m ...
- IIS 实现http重定向https(亲测有效:解决URL重写模块配置https重定向不生效的问题)
前言 以前部署网站的时候,都是通过代码来实现http重定向https,最近在部署个人网站的时候,突发奇想可不可通过IIS来实现无代码的重定向呢? 在一番操作猛如虎的搜索引擎操作后,发现只有google ...
- ELK套件部署
前言 经过两周的不断碰壁,版本的选择 最终选择ELK的7.6.1套餐 因为我所需要的的警报插件sentinl也才跟新到7.6.1 运行环境:centos7 需要开放的端口:5601,9200,514( ...
- 为什么最近每份 Android 简历都说 “熟悉 MQTT 协议”?
请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...
- 导出DNS服务器上的记录
近日遇到一个需求,需要将DNS服务器上的所有记录都导出. 试了一下,如果从DNS管理单元里直接选择导出列表,那么子域的DNS记录是不会被导出的.这样显然不行,需要寻找其它方法.本来想用Export-D ...
- Solutions:Elastic SIEM - 适用于家庭和企业的安全防护 ( 五)
- Springboot配置文件参数使用docker-compose实现动态配置
文章总结; Springboot配置文件中的一些参数可以写成变量的形式,具体变量的值可以从docker-compose.yml文件中设置来获取 在yml文件中,通过${Envirment_variab ...
- Java 泛型程序设计
1. 泛型类 public class Pair<T> { private T first; private T second; public void setSecond(T seco ...