前言
大家熟悉的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 软件源架构
关键组件交互:
- 源仓库管理器:维护GitHub/GitLab等远程源列表
- 清单解析器:解析YAML格式的安装元数据
- 下载管理器:支持断点续传与校验码验证
- 安装引擎:执行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 | 手动安装.msixbundle | winget --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包 |
七、最佳实践指南
- 版本锁定策略:生产环境中应使用
--version
参数精确指定版本 - 离线部署方案:通过
--download
参数预下载安装包 - 环境隔离:使用
--scope machine/user
控制安装范围 - 依赖管理:在清单文件中明确声明
dependencies
字段 - 持续集成:定期运行
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 path | New-Item -ItemType Dir path |
写入文件 | echo text > file | Set-Content -Path file -Value text |
管道操作 | 不支持原生管道 | `winget list |
环境变量访问 | %VAR% | $env:VAR |
本手册全面覆盖WinGet在CMD环境中的使用场景,建议开发人员注意以下要点:
- 路径处理:CMD中使用
%LOCALAPPDATA%
而非PowerShell的$env:LOCALAPPDATA
- 批处理脚本:使用
.bat
文件实现自动化部署 - 权限控制:需要管理员权限的操作应使用
runas
启动CMD - 编码规范:CMD中处理Unicode文件需使用
chcp 65001
切换代码页
对于企业级应用,推荐结合组策略进行集中管理,并建立私有源仓库实现内部软件分发。CMD环境下的批量部署建议配合for
循环和if
条件判断实现复杂逻辑。
AI整理,仅供参考。