Anye
Anye
Published on 2023-11-21 / 31 Visits
0
0

轻松管理 Windows 软件:玩转 Winget 包管理器

前言

很早之前,为了使更多用户下载官方版本的软件而非受到各种下载站捆绑的影响,我曾想自己维护一套软件源,可以实现索引各种软件的官网下载地址,但是仅凭我一人的力量,实现这个设想不现实,这个计划就搁置了下来,但今天我想分享一项新的发现,一个有望解决这一难题的工具—— Winget 包管理器。在这里,我将探讨如何利用 Winget 重新点燃这个计划,并实现推动用户选择官方软件版本的初衷。

介绍

Winget(Windows 包管理器)是 Microsoft 为 Windows 10 引入的官方软件包管理工具。它旨在简化 Windows 系统上的软件安装、更新和卸载过程,为用户提供更统一、便捷的软件管理体验。通过命令行界面,用户可以轻松地搜索、安装、卸载和管理各种应用程序。

Winget 的主要优势之一是它允许用户通过命令行或脚本自动化软件管理任务,提高了工作效率。用户可以使用简洁的命令,例如 winget install 来安装应用程序,或者 winget list 来列出所有已安装的软件包。这使得在系统上管理软件变得更加直观和灵活。

另外,Winget 通过提供清晰的软件包信息,帮助用户避免通过不安全的下载站点获取软件的风险。它将软件安装的过程标准化,并向用户提供了一个中央化的位置来查找、安装和更新他们所需的应用程序。

总体而言,Winget 是 Windows 生态系统中一个强大而现代的工具,为用户提供了更便捷、一致的软件管理方式,有望改善 Windows 上软件安装的体验。

使用指南

安装

注意:Winget 目前在 Windows 10 1809(内部版本 17763)或更高版本受支持。不建议在 Windows Server 上安装使用,这可能会产生一些依赖性问题。

Winget 在大部分 windows 10 和所有 windows 11 上内置,如果你的系统在上述版本的范围中但是无法使用 winget 命令,请尝试Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe 来注册启动 Winget。

基础使用

你可以使用你喜欢的终端来启动 Winget ,如 Powershell 或 命令提示符(Cmd):开始菜单 右键终端 。首次使用会拉取软件包信息,大约4M左右,速度取决于网络情况。

1. 安装软件包

winget install <软件包名称>

例如,要安装 Visual Studio Code,可以运行:

winget install Microsoft.VisualStudioCode

2. 卸载软件包

winget uninstall <软件包名称>

例如,要卸载 Visual Studio Code,可以运行:

winget uninstall Microsoft.VisualStudioCode

3. 更新软件包

可使用 winget update 获取可用的更新,更新软件包使用:

winget update <软件包名称>

例如,要更新 Visual Studio Code,可以运行:

winget update Microsoft.VisualStudioCode

4. 搜索软件包

winget search <关键词>

例如,要搜索所有包含 "web" 的软件包,可以运行:

winget search web

5. 列出已安装的软件包

winget list

这将列出所有已经安装的软件包。

6. 显示软件包详细信息

winget show <软件包名称>

例如,要查看 Visual Studio Code 的详细信息,可以运行:

winget show Microsoft.VisualStudioCode

7. 导出和导入安装清单(不完善,不建议使用)

winget export -o <文件路径>	# 导出安装清单
winget import -i <文件路径>	# 导入安装清单

这允许你导出已安装软件包的清单,以便在其他计算机上导入。

进阶使用

在使用 winget install/update 时传入相关参数实现部分进阶功能

1. 使用版本参数 -v

winget install/upgrade <软件包名称> -v <版本号>

例如:手动选择安装bandizip最后一个没有广告的版本6.29

winget install Bandisoft.Bandizip -v 6.29

2. 使用选择源参数-s

winget install/upgrade <软件包名称> -s winget

The client has access to packages from two default sources. The first is "msstore" the Microsoft Store (free Apps rated "e" for everyone). The second is "winget" the WinGet community repository.

——来自GitHub

译:Winget 客户端默认有两个源。第一个是微软商店的“msstore”(每个人都可以获得“e”级的免费应用程序)。第二个是 winget 社区存储库的“winget”。

我这里建议使用-s参数使用winget 源,因为国内部分大厂在微软应用商店的软件或多或少都有功能阉割或版本落后,所以建议使用 winget 社区源来保证软件来源于官网。

3. 使用请求交互式安装参数-i

Winget 默认采用静默安装,即所有参数均按照默认来操作。如果想自己设置安装位置,是否开机自启,是否创建快捷方式等,可以使用 -i 参数来请求交互安装,即正常的安装方式。

以下是一个使用 -i 参数的示例:

winget install/upgrade <软件包名称> -i

例如:请求交互式安装微信

winget install Tencent.WeChat -i

4. 配置网络(使用系统代理)

winget只负责收集软件列表,不负责存储安装包,所以实际下载还是从官网来的。

winget下载后端有两种,“传递优化”和wininet。绝大部分情况下,即便是GitHub上的资源,在传递优化的加持下也可以下的非常快(当然,要打开允许从Internet下载才行)。

毕竟不是所有东西都能加速,如果需要设置代理,就要修改配置文件(运行winget settings打开),在靠后的位置添加这段就可以切换到wininet后端,此时系统代理设置会生效。

——来源于知乎-沙包妖梦

"network": {
    // "downloader": "do",
    "downloader": "wininet",
    "doProgressTimeoutInSeconds": 60
}

完整 settings.json 示例:

{
    "$schema": "https://aka.ms/winget-settings.schema.json",

    // For documentation on these settings, see: https://aka.ms/winget-settings
    // "source": {
    //    "autoUpdateIntervalInMinutes": 5
    // },
    "network": {
        // "downloader": "do",
        "downloader": "wininet",
        "doProgressTimeoutInSeconds": 60
    }
}

常用软件包安装指令

官方软件源,国内

winget install --id Huawei.HuaweiBrowser -e -s winget # 华为浏览器
winget install --id Google.Chrome -e -s winget        # 谷歌浏览器
winget install --id Tencent.QQ.NT -i -e -s winget     # QQ
winget install --id Tencent.WeChat -i -e -s winget    # 微信
winget install --id ByteDance.Feishu -e -s winget     # 飞书
winget install --id Youqu.ToDesk -e -s winget         # ToDesk远程桌面
winget install --id Alibaba.aDrive -e -s winget       # 阿里云盘
winget install --id Kingsoft.WPSOffice.CN -e -s winget   # WPS
winget install --id ByteDance.JianyingPro -e -s winget    # 剪映
winget install --id Kingsoft.KDocs -e -s winget       # 金山文档
winget install --id Bandisoft.Bandizip -v 6.29 -e -s winget   # Bandizip压缩软件
winget install --id Tencent.TencentMeeting -e -s winget   # 腾讯会议
winget install --id Logitech.OptionsPlus -e -s winget  # Logitech Options

官方软件源,国外

winget install --id Termius.Termius -e -s winget      # Termius
winget install --id Daum.PotPlayer -e -s winget       # PotPlayer播放器
winget install --id tailscale.tailscale -e -s winget  # Tailscale
winget install --id Eugeny.Tabby -e -s winget         # Tabby终端
winget install --id agalwood.Motrix -e -s winget      # Motrix下载器
winget install --id Microsoft.VisualStudioCode -e -s winget   # VSCode
winget install --id Microsoft.PowerToys -e -s winget  # PowerToys
winget install --id Git.Git -e -s winget                # Git
winget install --id Valve.Steam -e -s winget           #Steam

微软应用商店源

winget install --name 'DevToys' -e -s msstore          # DevToys
winget install --name 'Watt Toolkit' -e -s msstore     # Watt Toolkit


Comment