早上开站会,领班让我去搞一下第三方软件的自动化安装,并且告诉我用Winget去实现,主要是为了跳过 UI 操作
以下所有内容都来自自己对微软官方文档的阅读使用 winget 工具安装和管理应用程序 | Microsoft Learn
若想使用Winget 则需要先登录Windows,如果登录后还是用不了则先用PowerShell注册:Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
确保已经安装了 Winget (好像是自动安装的?我没记的我的电脑安装过,但是就可以直接用)
核实了一下,可以直接用,只要登录了用户账户就可以直接用winget命令 个别软件安装过程中有UAC 验证,再通过提高权限之后就解决了。
主要用到的命令是:winget install NAME [-property] 除了Install 之外,还有其他一些命令如下所示
info | 显示有关系统的元数据(版本号、体系结构、日志位置等)。 有助于进行故障排除。 |
install | 安装指定的应用程序。 |
show | 显示指定应用程序的详细信息。 |
source | 添加、删除和更新 winget 工具访问的 Windows 程序包管理器存储库。 |
search | 搜索某个应用程序。 |
list | 显示已安装的包。 |
升级 upgrade | 升级给定的包。 |
uninstall | 卸载给定的包。 |
hash | 为安装程序生成 SHA256 哈希。 |
validate | 验证要提交到 Windows 程序包管理器存储库的清单文件。 |
设置 settings | 打开设置。 |
功能 features | 显示试验功能的状态。 |
export | 导出已安装包的列表。 |
import | 将所有包安装到一个文件中。 |
pin | 管理包固定。 |
configure | 将系统配置为所需状态。 |
下载 download | 下载指定应用程序的安装程序。 |
install 命令里也有一些命令 详细的细节可以看这里: install Command | Microsoft Leazhe
zhe
-m、--manifest | 必须后跟清单 (YAML) 文件的路径。 可以使用清单从本地 YAML 文件运行安装体验。 |
--id | 将安装限制为应用程序的 ID。 |
--name | 将搜索限制为应用程序的名称。 |
--moniker | 将搜索限制为针对应用程序列出的名字对象。 |
-v、--version | 允许你指定要安装的确切版本。 如果此项未指定,则使用 latest 会安装最高版本的应用程序。 |
-s、--source | 将搜索限制为所提供的源名称。 必须后跟源名称。 |
--scope | 用于指定安装程序是应该以用户还是计算机范围为目标。 查看与包安装范围相关的已知问题。 |
-a, --architecture | 选择要安装的体系结构。 |
--installer-type | 选择要安装的安装程序类型。 请参阅 使用 winget 工具安装和管理应用程序 | Microsoft Learn。 |
-e、--exact | 在查询中使用确切的字符串,包括检查是否区分大小写。 它不会使用子字符串的默认行为。 |
-i、--interactive | 以交互模式运行安装程序。 默认体验会显示安装程序进度。 |
-h、--silent | 以静默模式运行安装程序。 此选项禁止显示所有 UI。 默认体验会显示安装程序进度。 |
--locale | 指定要使用的区域设置(BCP47 格式)。 |
-o、--log | 将日志记录定向到日志文件。 必须提供你具有写入权限的文件的路径。 |
--custom | 除默认值外,要传递给安装程序的参数。 |
--override | 要直接传递给安装程序的字符串。 |
-l、--location | 要安装到的位置(如果支持)。 |
--ignore-security-hash | 替代安装程序哈希检查。 建议不要使用。 |
--ignore-local-archive-malware-scan | 忽略作为从本地清单安装存档类型包的一部分执行的恶意软件扫描。 |
--dependency-source | 使用指定的源查找包依赖项。 |
--accept-package-agreements | 用于接受许可协议,并避免出现提示。 |
--accept-source-agreements | 用于接受源许可协议,并避免出现提示。 |
--no-upgrade | 如果已安装的版本已存在,则跳过升级。 |
--header | 可选 Windows-Package-Manager REST 源 HTTP 标头。 |
-r、--rename | 重命名可执行文件(可移植)的值 |
--uninstall-previous | 在升级过程中卸载包的早期版本 |
--force | 直接运行命令并继续处理非安全相关问题。 |
-?、--help | 获取有关此命令的更多帮助。 |
--wait | 提示用户在退出前按任意键。 |
--logs,--open-logs | 打开默认日志位置。 |
--verbose, --verbose-logs | 用于替代日志记录设置并创建详细日志。 |
--disable-interactivity | 禁用交互式提示。 |
这里的一些参数自己使用了,但是并没有达到自己预期的效果,比如:
这里面的这些在自己多次尝试之后,都没有办法默认直接 y 或者 n,有知道如何操作的朋友请留言哈,感激。
在使用Winget的过程中,发现相同的软件,竟然有多个 “源” 例如这样
可以看到,有msstore和winget两种,通过查询可以得知,分别表示软件安装包的来源是微软的store或者winget 的开源社区,当然,自己也可以配置 源
ok,总的来说,不难。后续进一步的操作和知识,因为暂时用不到,所以就先放下了。