当前位置: 首页 > ds >正文

【基础】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-lateststeps:- name: 安装构建依赖run: |cmd /c winget install --id Python.Python.3.9 --silentcmd /c winget install --id Git.Git --silent- name: 验证安装run: |python --versiongit --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整理,仅供参考。

http://www.xdnf.cn/news/6854.html

相关文章:

  • Spring 框架中适配器模式的五大典型应用场景
  • 轨道炮--范围得遍历,map巧统计
  • 强化学习算法实战:一个例子实现sarsa、dqn、ddqn、qac、a2c、trpo、ppo
  • RAGFlow升级到最新0.18.0新手指南
  • 【全解析】EN18031 标准下的 AUM 身份认证机制[上篇]
  • 国产三维CAD皇冠CAD(CrownCAD)建模教程:插接箱
  • B2C 商城转型指南:传统企业如何用 ZKmall模板商城实现电商化
  • 线上问题排查:JVM OOM问题如何排查和解决
  • Protobuf——Protocol Buffer详解(1)
  • RFID系统集成业务中,通过产业链上下游挖掘客户
  • Kubernetes + GlusterFS + Heketi 动态卷管理实践 !
  • 中大型水闸安全监测系统解决方案
  • 深度学习驱动下的目标检测技术:原理、算法与应用创新(三)
  • 【C#】 lock 关键字
  • 【笔记】导出Conda环境依赖以复现项目虚拟环境
  • 深度学习驱动下的目标检测技术:原理、算法与应用创新(二)
  • LLM学习笔记(七)注意力机制
  • C# NX二次开发-实体离散成点
  • 使用pyinstaller生成exe时,如何指定生成文件名字
  • Linux!启动~
  • WHAT - 前端同构 Isomorphic Javascript
  • Ubuntu系统安装VsCode
  • UAI 2025重磅揭晓:录取数据公布(附往届数据)
  • Python字符串常用内置函数详解
  • 独立开发者利用AI工具快速制作产品MVP
  • Qt功能区:Ribbon使用
  • Linux复习笔记(六)shell编程
  • 实现书签-第一部分
  • 中大型水闸安全监测系统建设实施方案
  • 在服务器上安装AlphaFold2遇到的问题(2)