PowerShell 7.4.6 MSIXBundle 缺失:快速自查与修复指南

发布时间:2026/8/30 9:43:49
PowerShell 7.4.6 MSIXBundle 缺失:快速自查与修复指南 PowerShell 7.4.6 MSIXBundle 缺失快速自查与修复指南【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShellPowerShell 7.4.62024-10-22 发布的官方发布渠道中找不到 .msixbundle 包需要多架构部署、自动装包管理的 Windows 用户首当其冲。下面按先自查、再定位、后修复的顺序带你用最短时间确认问题、补上缺失的包。现象与自查一分钟自检清单如果你遇到下面任意一条基本可以确认踩中了同一个问题发布页面或下载链接里只有 .msi、.zip没有 PowerShell-7.4.6-win-x64.msixbundle自动化部署脚本按固定文件名拉取 .msixbundle结果 404构建机上能打出 .msix但 bundle 阶段产物为空用安装脚本装 7.4.6 时无论怎么传参都只能拿到 .zip。一分钟自检流程打开 CHANGELOG/7.4.md 的 7.4.6 条目确认发布日期是 2024-10-22、主题为 Bump .NET SDK to 8.0.403检查发布产物清单里是否存在任意 .msixbundle 文件名在构建目录运行Test-Path *.msixbundle看产物是否被清理掉。三条都命中就往下读原因否则多半是网络或渠道缓存问题。背后原因三处变更叠加在一起7.4.6 这个版本本身只是构建和打包的例行更新但三处改动叠在同一周期正好把 MSIXBundle 这条链路上的每个环节都碰了一下。构建清理环节bundle 文件被顺手清掉现象构建机日志里 msix 相关产物被删除最终产物目录里只剩 .msix。证据CHANGELOG/7.4.md 7.4.6 条目中记录了 Delete the msix blob if its already there (#24353)。一句话结论这条改动本意是防止旧缓存干扰构建但删除条件没有区分 .msix 与 .msixbundlebundle 文件被一起清掉发布阶段拿不到包。打包配置环节manifest 版本范围盖不住 Windows 11现象makeappx 校验阶段跳过 bundle 生成。证据assets/AppxManifest.xml 第 23 行的TargetDeviceFamily仍写着MaxVersionTested10.0.18362.0而 7.4.6 同期把 .NET SDK 升到了 8.0.403测试基线没有同步跟上。一句话结论版本范围停在 Windows 10 18362验证工具对 Windows 11 环境直接放弃生成 bundle。安装脚本环节分支逻辑里根本没有 bundle现象tools/install-powershell.ps1 第 279-284 行的 Windows 分支只有两个出口——$UseMSI为真拼 .msi否则拼 .zip。一句话结论脚本从未给 .msixbundle 留过分支即使包存在脚本也不会下载和安装它。动手修复四步把 MSIXBundle 找回来1. 在打包工程中补上 bundle 生成目标做什么在 tools/wix/Microsoft.PowerShell.Packaging.csproj 中加入一个 Build 之后执行的 target调用makeappx bundle指向输出目录生成 PowerShell.msixbundle。为什么生成目标缺失产物自然不会出现这是整条链的起点。如何确认构建结束后输出目录里能列出 PowerShell.msixbundle 文件。2. 给清理逻辑加一条排除条件做什么修改 7.4.6 流水线中 #24353 对应的删除步骤核心变更只有这一行- Delete the msix blob if its already there (#24353) Delete the msix blob if its already there, excluding MSIXBundle (#24353)为什么这是 bundle 被误删的直接原因保留条件一加缓存优化和产物共存。如何确认连跑两次构建第二次产物目录中 .msixbundle 依然存在。3. 更新 manifest 的测试版本基线做什么编辑 assets/AppxManifest.xml 第 23 行核心变更一行- TargetDeviceFamily NameWindows.Universal MinVersion10.0.17763.0 MaxVersionTested10.0.18362.0 / TargetDeviceFamily NameWindows.Universal MinVersion10.0.17763.0 MaxVersionTested10.0.22621.0 /为什么把 MaxVersionTested 抬到 Windows 11 的 22621验证环节才会放行。同一份文件第 46-50 行的 executionAlias 已把pwsh.exe暴露到命令行安装后能直接调用不要删掉这段。如何确认在 Windows 11 测试机上重新跑 makeappx 校验bundle 步骤不再被跳过。4. 给安装脚本加 MSIXBundle 分支做什么修改 tools/install-powershell.ps1 第 279-284 行的 Windows 分支并新增一个-UseMSIX开关核心变更if ($UseMSI) { $packageName PowerShell-${release}-win-${architecture}.msi } elseif ($UseMSIX) { $packageName PowerShell-${release}-win-${architecture}.msixbundle } else { $packageName PowerShell-${release}-win-${architecture}.zip }为什么脚本此前只认识 .msi 和 .zip补上分支后你才能显式指定 bundle 格式。如何确认传-UseMSIX运行脚本日志中拼出的下载文件名以 .msixbundle 结尾。验证与回退怎么确认修好了先做三项检查。第一在构建输出目录执行Test-Path src/powershell-win-core/bin/Release/net8.0/win-x64/PowerShell.msixbundle返回 True 即产物已生成第二查构建日志中 makeappx bundle 步骤为成功且无 skip 字样第三在 test/packaging/windows/ 下跑一遍打包测试确认 bundle 能正常安装。如果验证不通过回退策略按代价从小到大排先改用 .zip 或 .msi 包完成部署保证业务不停再检查清理步骤是否把 bundle 再次删掉回到修复步骤 2最后确认 manifest 的 MaxVersionTested 已生效而不是被旧缓存覆盖。长效预防四条建议 升级提示在 test/packaging/windows/ 中为 MSIXBundle 加专项测试每个版本必须能生成并安装成功凡涉及打包流水线的变更提交时强制附带验证步骤写进 CHANGELOG/7.4.md 对应条目用 tools/ComponentGovernance/ComponentGovernance.psm1 定期扫描依赖SDK 升级前先跑一遍兼容性检查在 docs/building/windows-core.md 中补一节 MSIXBundle 构建说明和常见问题排查别只留在口口相传里。最后提醒CHANGELOG/7.4.md 显示 7.4.7 已包含 Fix backport issues with release pipeline (#24835)发布链路问题在后续版本中修复。受 7.4.6 影响的环境建议尽快升级到 7.4.7 及以上版本而不是长期依赖手动补包。【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考