【基础】Windows开发设置入门5:WinGet开发者完全指南(AI整理)

前言

大家熟悉的docker、Python,但对于Windows上有一套开配合开发的相对底层的环境设置,包括powershell、winget、WSL、还有开发驱动器什么的,我准备系统学一下,不然地基不牢,也盖不起冲天高楼~

本节,介绍在 Windows 11 上设置开发驱动器。开发人员驱动器是一种新形式的存储卷,可用于提高关键开发人员工作负荷的性能。

往期参考

【基础】Windows开发设置入门1:各种终端比较-CSDN博客

【基础】Windows开发设置入门2:Windows 终端Windows Terminal-CSDN博客

【基础】Windows开发设置入门3:在 Windows 11 上设置开发驱动器,提升性能速度-CSDN博客

【基础】Windows开发设置入门4:Windows、Python、Linux和Node.js包管理器的作用和区别(AI整理)-CSDN博客 

本文对应官网文档

 官方教程:使用 WinGet 安装和管理应用程序 | Microsoft Learn


 本文核心内容

 WinGet开发者完全指南。

一、WinGet技术架构解析

1. 核心定位

微软官方开发的跨平台命令行包管理工具,集成于Windows 10 1709+ / Server 2025+系统,提供:

  • 统一软件仓库访问(Microsoft Store、社区源、私有源)
  • 全生命周期管理(安装/更新/卸载/配置)
  • 自动化脚本支持(PowerShell/Batch/Python集成)
  • 企业级扩展能力(清单验证、安全策略、多源管理)

2. 工作原理

2.1 软件源架构

关键组件交互:

  1. 源仓库管理器:维护GitHub/GitLab等远程源列表
  2. 清单解析器:解析YAML格式的安装元数据
  3. 下载管理器:支持断点续传与校验码验证
  4. 安装引擎:执行MSI/EXE/MSIX等安装流程

POWERSHELL典型安装流程:

 # 示例:安装VSCode的工作流
1. winget install vscode --silent
2. 查询源仓库中的manifest文件
3. 下载SHA256校验安装包
4. 验证数字签名有效性
5. 执行静默安装参数
6. 记录安装元数据到注册表

2.2 安装流程优化
  • 并行下载:支持多线程提升大文件获取速度
  • 缓存机制%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller存储临时文件
  • 回滚策略:安装失败时自动清理残留文件

二、开发环境配置手册

系统支持情况对比:

Windows版本安装方式验证命令
Win10 1709-1803手动安装.msixbundlewinget --version
Win10 1809+ / Win11自动集成(App Installer)winget list
Server 2025启用"桌面体验"组件winget upgrade

 Windows11下,首次使用winget会自动安装:

系统检查与手动安装

:: 检查Windows版本(CMD环境)
ver

:: 启用WinGet功能(需以管理员身份运行CMD)
dism.exe /Online /Enable-Feature /FeatureName:AppPackageManager /All /NoRestart

:: 安装最新版本(可选)
winget install --id Microsoft.WindowsPackageManager -e --source winget

源仓库管理

:: 查看默认源配置(CMD环境)
winget source list

:: 添加第三方源示例(Python包仓库)
winget source add --name python --url https://github.com/yourusername/python-pkgs.git

:: 删除无效源
winget source remove --name obsolete-repo

三、核心功能深度使用

基础命令矩阵

功能命令示例参数说明
精准搜索winget search docker --id Docker.DockerDesktop--exact强制精确匹配
静默安装winget install 7zip -s --accept-package-agreements-s无界面安装
版本锁定winget install python --version 3.11.4--version指定版本
批量操作winget install -h package1 package2-h横向排列任务
清单安装winget install -m .\manifest.yaml需启用LocalManifestFiles 
企业级卸载winget uninstall "Adobe Reader" --purge--purge彻底删除配置

 示例。

3.1 软件包管理(CMD专用)
:: 搜索软件包(支持通配符)
winget search python --case-sensitive false

:: 安装指定版本(CMD语法)
winget install --id Python.Python.3.9.12 -v 3.9.12

:: 升级特定软件
winget upgrade --id Microsoft.VisualStudioCode

:: 卸载并清理残留
winget uninstall --id Git.Git --remove-data
3.2 高级查询操作
:: 查看软件详细信息(CMD环境)
winget show --id Microsoft.PowerShell --version 7.3.0

:: 导出已安装包列表(JSON格式)
winget list --output json > installed_pkgs.json

:: 过滤特定来源的包
winget search --source winget --query vscode

四、自动化与企业级应用

4.1 批量部署方案(CMD脚本)

:: 创建批处理文件 install.bat
@echo off
setlocal
winget install --id Python.Python.3.9 --silent
winget install --id Git.Git --silent
echo 安装完成
pause
# PowerShell与CMD混合使用示例
cmd /c "winget import --file batch_install.json"

4.2 CI/CD集成实践(CMD兼容)

# GitHub Actions流水线配置示例(CMD模式)
jobs:
  build:
    runs-on: windows-latest
    steps:
      - name: 安装构建依赖
        run: |
          cmd /c winget install --id Python.Python.3.9 --silent
          cmd /c winget install --id Git.Git --silent
      - name: 验证安装
        run: |
          python --version
          git --version

五、自定义包管理

5.1 创建自定义源(CMD操作)

:: 初始化源仓库结构(CMD环境)
md .\MyRepo\manifests\myapp\1.0.0

:: 创建清单文件(使用echo命令)
echo SchemaVersion: 1.0.0 > .\MyRepo\manifests\myapp\1.0.0\myapp.yaml
echo PackageIdentifier: MyCompany.MyApp >> .\MyRepo\manifests\myapp\1.0.0\myapp.yaml

:: 提交源变更(CMD Git操作)
cd .\MyRepo
git add .
git commit -m "Add MyApp package"

5.2 自定义安装参数(CMD兼容)

# 创建带自定义参数的安装脚本(适用于CMD调用)
$installArgs = "/S /D=C:\CustomPath"
Start-Process -FilePath "myapp.exe" -ArgumentList $installArgs -Wait
:: 在清单文件中引用(CMD环境适用)
InstallerType: custom
CustomCommand: cmd.exe /C myapp.exe /S /D=C:\CustomPath

六、安全与故障排查

6.1 安全增强配置(CMD操作)

:: 启用强制签名验证(需管理员权限)
winget settings --enable requireSignedPackages

:: 配置代理服务器(CMD环境)
winget settings --network-proxy http://proxy.example.com:8080

6.2 常见问题解决方案(CMD专用)

:: 查看完整日志(CMD路径访问)
notepad %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*.log

:: 强制重新同步源
winget source reset --force

:: 解决权限问题(以管理员身份运行CMD)
winget install admin_tool

6.3 常见问题解决方案

现象诊断命令修复方案
安装超时winget --verbose-logs install检查代理设置或更换源
清单验证失败winget validate manifest.yaml使用yamllint校验格式
权限不足Get-AppxPackage Microsoft.DesktopAppInstaller重注册Appx包

七、最佳实践指南

  1. 版本锁定策略:生产环境中应使用--version参数精确指定版本
  2. 离线部署方案:通过--download参数预下载安装包
  3. 环境隔离:使用--scope machine/user控制安装范围
  4. 依赖管理:在清单文件中明确声明dependencies字段
  5. 持续集成:定期运行winget upgrade --all保持环境更新

附录:常用CMD命令速查

操作类型CMD命令模板示例
软件安装winget install <package>winget install firefox
版本升级winget upgrade <package>winget upgrade --id vscode
信息查询winget show <package>winget show python --exact
日志分析notepad %LOCALAPPDATA%...notepad %LOCALAPPDATA%...\DiagOutputDir\*.log
源管理winget source <subcommand>winget source add --name myrepo ...

附录:CMD与PowerShell对比表

功能CMD语法示例PowerShell语法示例
创建目录md pathNew-Item -ItemType Dir path
写入文件echo text > fileSet-Content -Path file -Value text
管道操作不支持原生管道`winget list
环境变量访问%VAR%$env:VAR

本手册全面覆盖WinGet在CMD环境中的使用场景,建议开发人员注意以下要点:

  1. 路径处理:CMD中使用%LOCALAPPDATA%而非PowerShell的$env:LOCALAPPDATA
  2. 批处理脚本:使用.bat文件实现自动化部署
  3. 权限控制:需要管理员权限的操作应使用runas启动CMD
  4. 编码规范:CMD中处理Unicode文件需使用chcp 65001切换代码页

对于企业级应用,推荐结合组策略进行集中管理,并建立私有源仓库实现内部软件分发。CMD环境下的批量部署建议配合for循环和if条件判断实现复杂逻辑。


AI整理,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正经教主

有钱捧个钱场,没钱捧个人场👌

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值