winget-cli完全指南:从安装到精通Windows软件包管理

winget-cli完全指南:从安装到精通Windows软件包管理

【免费下载链接】winget-cli microsoft/winget-cli: 是微软推出的一款命令行工具,用于管理 Windows Package Manager (winget) 中的软件包。适合对 Windows Package Manager、软件包管理和想要使用命令行管理 Windows 软件包的开发者。 【免费下载链接】winget-cli 项目地址: https://gitcode.com/gh_mirrors/wi/winget-cli

引言:Windows软件包管理的革命

你是否还在为寻找可靠的软件下载源而烦恼?是否厌倦了手动跟踪和更新系统中的应用程序?微软推出的Windows Package Manager(winget)彻底改变了这一现状。作为Windows系统原生的命令行软件包管理器,winget让你能够通过简单的命令行操作完成软件的安装、升级、卸载和管理,极大地提升了开发效率和系统维护体验。

读完本文后,你将能够:

  • 掌握winget的安装与基本配置
  • 熟练使用各种核心命令进行软件管理
  • 定制个性化的winget设置以满足特定需求
  • 解决常见的winget使用问题
  • 利用高级功能提升工作流效率

一、安装与初始配置

1.1 系统要求

winget要求Windows 10 1809(内部版本17763)或更高版本。Windows Server 2019不支持,因为Microsoft Store不可用且缺少更新的依赖项。Windows Server 2022可能可以安装,但应视为实验性(不受支持),并且需要手动安装依赖项。

1.2 安装方法

1.2.1 Microsoft Store(推荐)

客户端通过App Installer包分发。这是获取winget的最简单方法,并且会自动接收更新。

1.2.2 开发版本

有两种获取开发版本的方法:

注意:加入Windows Package Manager Insider计划后,可能需要几天时间才能收到更新的App Installer。

1.2.3 手动更新

我们的Releases页面也会提供相同的Microsoft Store包。请注意,安装此包将为你提供WinGet客户端,但如果你未加入Windows Package Manager Insider计划,将无法从Microsoft Store启用自动更新。

注意:在较旧的Windows 10版本上,你可能需要安装VC++ v14桌面框架包。只有当你收到有关缺少框架包的错误时才需要这样做。

1.3 验证安装

安装完成后,打开命令提示符或PowerShell,输入以下命令验证winget是否安装成功:

winget --version

如果安装成功,将显示当前winget版本信息,例如:

v1.7.0-preview

二、核心命令详解

2.1 搜索软件包

使用search命令查找可用的软件包:

winget search <关键词>

例如,搜索"python":

winget search python

这将返回所有名称或ID中包含"python"的软件包列表,包括名称、ID、版本和来源信息。

2.2 安装软件包

使用install命令安装软件包:

winget install <包ID>

例如,安装Python:

winget install Python.Python.3.10

你也可以直接使用软件名称,但为了避免歧义,建议使用包ID。如果有多个版本可用,可以使用--version参数指定版本:

winget install Python.Python.3.10 --version 3.10.0
2.2.1 安装选项
参数描述
-v, --version指定要安装的版本
-s, --source指定要使用的源
-e, --exact强制精确匹配包名称
--silent以静默模式安装(无用户交互)
--location指定安装位置
--scope指定安装范围(user或machine)

例如,使用静默模式安装Visual Studio Code:

winget install Microsoft.VisualStudioCode --silent

2.3 升级软件包

使用upgrade命令升级已安装的软件包:

winget upgrade <包ID>

升级所有可用软件包:

winget upgrade --all

查看可升级的软件包列表:

winget upgrade

2.4 卸载软件包

使用uninstall命令卸载软件包:

winget uninstall <包ID>

例如,卸载Python:

winget uninstall Python.Python.3.10

2.5 查看软件包信息

使用show命令查看软件包的详细信息:

winget show <包ID>

例如,查看Google Chrome的详细信息:

winget show Google.Chrome

这将显示软件包的描述、版本、作者、许可证、安装命令等详细信息。

2.6 管理软件源

winget使用软件源(sources)来获取软件包信息。默认情况下,winget配置了两个源:

  • msstore:Microsoft Store中的免费应用
  • winget:Windows Package Manager社区仓库
2.6.1 查看已配置的源
winget source list
2.6.2 添加自定义源
winget source add -n <源名称> -u <源URL>
2.6.3 更新源数据
winget source update
2.6.4 删除源
winget source remove -n <源名称>

2.7 列出已安装的软件

使用list命令查看系统中已安装的软件包:

winget list

你也可以使用关键词过滤结果:

winget list <关键词>

三、高级配置与个性化

3.1 配置文件设置

winget的配置文件settings.json允许你自定义其行为。通过以下命令打开配置文件:

winget settings

配置文件的默认位置:

  • 常规安装:%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
  • 从源代码构建的非打包版本:%LOCALAPPDATA%\Microsoft\WinGet\Settings\settings.json
3.1.1 常用配置选项
源更新间隔
"source": {
    "autoUpdateIntervalInMinutes": 3
}

autoUpdateIntervalInMinutes指定源自动更新的间隔时间(分钟)。0表示禁用自动更新,默认值为15。

进度条样式
"visual": {
    "progressBar": "accent"
}

progressBar设置进度条样式,可选值:

  • accent(默认):使用Windows强调色
  • retro:使用当前终端前景色
  • rainbow:彩虹色渐变
  • sixel:使用sixel图像(需要支持sixel的终端)
  • disabled:禁用进度显示
安装行为
"installBehavior": {
    "preferences": {
        "scope": "user",
        "architectures": ["x64", "arm64"],
        "installerTypes": ["msi", "msix"]
    }
}

installBehavior允许你设置安装偏好,如默认范围(user或machine)、首选架构和安装程序类型。

网络设置
"network": {
    "downloader": "do",
    "doProgressTimeoutInSeconds": 60
}

downloader指定下载器,可选值为defaultwininetdo(Delivery Optimization)。doProgressTimeoutInSeconds设置无进度时的超时时间(秒)。

3.2 自定义安装位置

对于支持自定义安装路径的便携软件包,可以通过配置文件设置默认安装根目录:

"installBehavior": {
    "portablePackageUserRoot": "C:/Users/用户名/PortableApps",
    "portablePackageMachineRoot": "C:/Program Files/PortableApps"
}

portablePackageUserRoot为当前用户设置便携软件的默认安装目录,portablePackageMachineRoot为所有用户设置。

3.3 配置命令别名

虽然winget本身不支持命令别名,但你可以通过创建PowerShell函数来实现类似功能。例如,在你的PowerShell配置文件中添加:

function wi { winget install $args }
function wu { winget upgrade $args }
function wun { winget uninstall $args }

这样,你就可以使用wiwuwun分别作为installupgradeuninstall的快捷命令。

四、故障排除与常见问题

4.1 命令未找到:winget

如果在命令提示符或PowerShell中运行winget时提示"命令未找到",可能是以下原因:

  1. PATH环境变量未配置:winget通常安装在%LOCALAPPDATA%\Microsoft\WindowsApps目录下。请确保此路径已添加到你的PATH环境变量中。

    验证方法:在PowerShell中运行:

    $env:PATH -split ';' | Select-String "WindowsApps"
    

    如果没有结果,请手动添加该路径:

    $env:PATH += ";$env:LOCALAPPDATA\Microsoft\WindowsApps"
    
  2. App Execution Alias被禁用:前往"设置 > 应用 > 应用执行别名",确保"winget"的开关已打开。

  3. 安装损坏:尝试重新安装App Installer。

4.2 网络连接问题

错误0x80072efd

此错误与网络连接有关,表示无法连接到服务器。可能的解决方案:

  1. 启用TLS 1.2:

    [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
    
  2. 刷新DNS缓存:

    ipconfig /flushdns
    
  3. 检查防火墙设置,确保winget可以访问网络。

错误0x801901a0

此错误与Delivery Optimization有关。可以通过配置winget使用WININET下载器来解决:

winget settings

在配置文件中添加或修改:

"network": {
    "downloader": "wininet"
}

4.3 安装失败

如果安装失败,首先尝试使用--verbose参数获取详细日志:

winget install <包ID> --verbose

常见安装问题及解决方案:

  1. 权限不足:尝试以管理员身份运行命令提示符或PowerShell。

  2. 已安装较新版本:使用--force参数强制安装特定版本:

    winget install <包ID> --version <版本号> --force
    
  3. 依赖项问题:某些软件需要特定的运行时环境。检查软件包详情页面获取依赖信息。

4.4 源更新失败

如果winget source update失败,尝试手动更新源:

winget source remove winget
winget source add winget https://cdn.winget.microsoft.com/cache/source.msix

五、高级使用技巧

5.1 批量安装软件

你可以创建一个文本文件,列出所有要安装的软件包ID,每行一个,然后使用以下命令批量安装:

Get-Content packages.txt | ForEach-Object { winget install $_ -e }

这在设置新计算机时特别有用。例如,packages.txt内容可能如下:

Microsoft.VisualStudioCode
Git.Git
Python.Python.3.10
NodeJS.NodeJS
Microsoft.PowerShell

5.2 使用配置文件自动安装

winget支持使用配置文件进行更复杂的安装配置。创建一个名为install.config的JSON文件:

{
    "$schema": "https://aka.ms/winget-config-schema",
    "sources": {
        "winget": {
            "enabled": true
        }
    },
    "packages": [
        {
            "packageIdentifier": "Microsoft.VisualStudioCode",
            "version": "1.70.0",
            "installOptions": ["--silent"]
        },
        {
            "packageIdentifier": "Git.Git"
        }
    ]
}

然后使用以下命令应用配置:

winget configure install.config

5.3 导出和导入已安装软件列表

导出已安装软件列表:

winget export -o installed_packages.json

在另一台计算机上导入此列表:

winget import -i installed_packages.json

这对于在多台计算机上保持一致的开发环境非常有用。

5.4 集成到CI/CD管道

winget可以轻松集成到CI/CD管道中,用于设置构建环境。例如,在GitHub Actions中:

jobs:
  build:
    runs-on: windows-latest
    steps:
      - name: Install dependencies
        run: |
          winget install Microsoft.VisualStudio.BuildTools --version 16.11.0 --silent --override "--installPath C:\BuildTools --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended"
          winget install Python.Python.3.10 --silent

5.5 使用别名和函数增强体验

在PowerShell中创建自定义函数来扩展winget功能:

# 快速搜索并安装软件
function winget-quickinstall {
    param(
        [Parameter(Mandatory=$true)]
        [string]$SearchTerm
    )
    $packages = winget search $SearchTerm | Out-GridView -Title "Select package to install" -PassThru
    if ($packages) {
        winget install $packages.Id
    }
}

# 检查并升级所有软件
function winget-upgradeall {
    winget upgrade --all --silent
}

六、未来展望与社区参与

6.1 即将推出的功能

根据微软的官方 roadmap,未来版本的winget将包含以下激动人心的功能:

  1. 改进的依赖管理:更智能地处理软件包之间的依赖关系。
  2. 更强大的配置管理:允许更精细的安装配置和策略控制。
  3. 增强的搜索功能:提供更相关的搜索结果和高级筛选选项。
  4. 性能优化:加快软件包安装和更新速度。

6.2 参与社区

winget是一个开源项目,欢迎社区贡献。你可以通过以下方式参与:

  1. 报告问题:在GitHub上提交bug报告和功能请求。
  2. 提交PR:为winget代码库贡献修复和新功能。
  3. 维护软件包:在winget-pkgs仓库中提交新软件包或更新现有软件包。
  4. 提供反馈:参与讨论和调查,帮助塑造winget的未来发展方向。

GitHub仓库地址:https://github.com/microsoft/winget-cli

七、总结

Windows Package Manager (winget) 为Windows用户提供了一个强大、高效的命令行软件包管理工具。通过本文介绍的内容,你应该已经掌握了从安装配置到高级使用的各个方面,包括:

  • 安装和配置winget的基本步骤
  • 使用核心命令进行软件的搜索、安装、升级和卸载
  • 自定义winget设置以满足个人需求
  • 解决常见的使用问题
  • 利用高级技巧提升工作效率

随着winget的不断发展,它将成为Windows平台上软件开发和系统管理不可或缺的工具。无论是普通用户还是IT专业人士,都可以通过winget简化软件管理流程,提高工作效率。

现在,是时候开始使用winget来管理你的Windows软件了。尝试使用winget search查找你常用的软件,或使用winget upgrade --all保持系统最新。如有任何问题或建议,欢迎参与winget的社区讨论,共同推动Windows软件管理体验的进步。

【免费下载链接】winget-cli microsoft/winget-cli: 是微软推出的一款命令行工具,用于管理 Windows Package Manager (winget) 中的软件包。适合对 Windows Package Manager、软件包管理和想要使用命令行管理 Windows 软件包的开发者。 【免费下载链接】winget-cli 项目地址: https://gitcode.com/gh_mirrors/wi/winget-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值