PowerShell 7.4.6 缺失 MSIXBundle 怎么修:分步排障完整指南
【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
PowerShell 7.4.6 在 Windows 上缺了 MSIXBundle(Windows 的现代应用打包格式)安装包,就是本文要解决的“PowerShell MSIXBundle 缺失”问题。按自查、定位、手动构建安装的顺序走完,你能把包拿回来。
📋 第一幕|快速自查:先确认你是否中招
- 发布页缺资产:7.4.6 官方发布里只有 .msi 和 .zip,搜不到 .msixbundle。最快自查:在 7.4.6 发布资产列表里搜 “msixbundle”,为空即中招。
- 包版本卡住:Windows 商店或 vPack 通道的 PowerShell 停在 7.4.5 不再更新。自查:运行
Get-AppxPackage -Name Microsoft.PowerShell | Select Version看注册版本。 - 安装脚本下不到 msixbundle:指定版本安装时,脚本拼出来的下载链接永远是 .zip。自查:看 tools/install-powershell.ps1 第 279 行的 Windows 分支。
命中任意一条,这篇指南就是为你写的;目标版本已在 7.4.7 之后的,直接跳第三幕。
🔍 第二幕|定位原因:包为什么会丢
构建层(打包流水线)。现象:7.4.6 流水线在升级 .NET SDK 8.0.403 的同时改了 MSIX 阶段,多出一条缓存清理规则。类比:这相当于在装配线末端加了一道“已有成品就别重做”的质检,结果新规则把刚打好的 MSIXBundle 也删了。证据:CHANGELOG/7.4.md 第 552 行记录 “Delete the msix blob if it's already there (#24353)”。
配置层(打包清单)。现象:打包工具做版本校验时自动跳过 MSIXBundle 生成。类比:清单像一张“体检证明”,上面写的已测最高系统版本太旧,新系统就认定它没验过。证据:assets/AppxManifest.xml第 23 行MaxVersionTested="10.0.18362.0",只覆盖到 Windows 10 21H2。
脚本层(安装脚本)。现象:Windows 安装只有 MSI 和 ZIP 两个分支,msixbundle 无处可下。类比:插座只有两孔,第三根插头根本插不进去。证据:tools/install-powershell.ps1 第 279–284 行:
if ($IsWinEnv) { if ($UseMSI) { $packageName = "PowerShell-${release}-win-${architecture}.msi" } else { $packageName = "PowerShell-${release}-win-${architecture}.zip" } }🔧 第三幕|动手修复:三步拿回安装包
步骤 1:升级到修复版。查看文件:CHANGELOG/7.4.md;看哪里:第 498 行 “Fix backport issues with release pipeline (#24835)”,这是 7.4.7 对流水线的修复记录;达成效果:官方渠道恢复 MSIXBundle 资产,升级即解决。一条 winget 命令完成:
winget upgrade --id Microsoft.PowerShell步骤 2:核对打包配置。查看文件:assets/AppxManifest.xml;看哪里:第 23 行TargetDeviceFamily,确认MaxVersionTested是否仍为旧值 10.0.18362.0;达成效果:弄清是哪个版本约束让打包工具跳过,手动重新打包时先更新这个参数。
步骤 3:手动构建并安装 msixbundle。坚持用 7.4.6 的话,先产出 win-x64 的 publish 目录,再在装有 Windows SDK 的机器上打包、安装。makeappx 负责生成捆绑包,Add-AppxPackage 负责装上系统:
makeappx bundle /d .\win-x64\publish\ /p .\PowerShell-7.4.6-win-x64.msixbundle Add-AppxPackage -Path .\PowerShell-7.4.6-win-x64.msixbundle✅ 第四幕|验证生效:怎么确认修好了
- 资产核对:官方 7.4.7 发布资产列表里出现
PowerShell-7.4.7-win-x64.msixbundle。 - 版本核对:运行
pwsh -NoProfile -Command '$PSVersionTable.PSVersion.ToString()',期望输出以 7.4.7 开头。 - 注册核对:运行
Get-AppxPackage -Name Microsoft.PowerShell,Version 字段不低于 7.4.7,InstallLocation 指向新版本目录。
🧱 第五幕|防再犯:把坑填上
- 给 CI 加打包断言:在 test/packaging/windows/ 增加“发布资产必须包含 msixbundle”的检查,缺包直接构建失败。
- changelog 打包条目当红线:CHANGELOG/7.4.md 里每条 MSIX 与流水线变更,评审时必须附测试用例。
- 依赖定期扫描:用 tools/ComponentGovernance/ComponentGovernance.psm1 巡检,提前发现 SDK 升级带来的不兼容。
- 文档沉淀排查步骤:把 MSIXBundle 构建与常见坑写进 docs/building/windows-core.md,下一个人能自助解决。
构建环境与打包细节见 docs/building/windows-core.md;官方版本修复记录以 CHANGELOG 为准,等不及的话从第三幕的手动构建开始。
【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考