Skip to content

OwO! Win Deployer v1.2.6.1

Choose a tag to compare

@github-actions github-actions released this 01 Jul 12:01
a3e5a81

v1.2.6.1 — 2026-07-01

修复

  • 🩹 断网时「软件安装中心」不再卡在「正在检测」——本次核心修复:修复了计算机未联网(或 winget 无法访问软件源)时,软件安装中心页面永久卡在加载 / 检测状态、无法进入的致命问题。
    • 根因:检测阶段对每个清单软件都单独执行一次 winget list --id <id>(约 150 个 winget 项),而每次 winget 调用都会联系其软件源——联网时单次也要约 12~13 秒,断网时更会一直阻塞。以 8 路并发计算,整轮检测累计需 150 秒以上,断网时体感即「永久卡死」;此前每次调用 8 秒的超时反而比 winget 联网时的真实耗时还短,会把调用杀在半路,导致已安装软件被误判为「未安装」。
    • 修复:每轮检测只执行 一次 winget list(加锁的共享任务,避免并发检测各跑一次),其余全部软件的 winget id 归属改为在内存中按空白分词精确查表判定(重定向输出不会截断长 id,如 Microsoft.VisualStudioCode 也能正确匹配);单次调用超时提高到 25 秒,联网时不再被误杀,断网时也有明确上限。
    • 新增 Detection.WingetReachable 状态:当那一次 winget list 超时(判定为断网)时,更新检查会直接跳过自己的 winget 调用,避免再额外空等一次超时。
    • Proc.RunAsync 增加可选的 timeoutSeconds 参数(基于链接取消令牌 + 超时后杀进程树),供所有可能因断网而无限阻塞的外部命令调用使用。
    • MainViewModel.DetectAllAsync 增加 try/finally 兜底,确保即使检测过程中出现异常,加载状态(IsLoading)也一定会被清除,页面不会卡死。
    • 实测:全量 windeploy plan --all(328 项)由 150 秒以上降至约 14 秒(联网冷启动一次 winget list;热启动约 2 秒),且已安装的 winget 应用(含长 id 的 VS Code、winget-bundle 的 VC++ 运行库合集)均正确识别。

调整

  • 构建脚本迁移到 scripts/build.ps1preview.ps1 由仓库根目录移动到 scripts/ 目录(与 publish.ps1 等其他脚本统一);修正 build.ps1 的仓库根路径解析($PSScriptRootSplit-Path -Parent $PSScriptRoot),移动后仍能正确定位 src/Directory.Build.props

新增

  • 无。

删除

  • 无。

一键在任意 Windows 设备上复刻开发环境、应用与个人配置。三种发行形态任选,均自带 catalog/ configs/ assets/ 数据:

下载 说明 免装 .NET 体积
…-win-x64-singlefile.zip 单文件版(推荐):解压后一个 WinDeploy.exe + 数据目录
…-win-x64-with-runtime.zip 集成运行环境版:多文件、自带 .NET 运行库,杀软启发式误报更低
…-win-x64-framework.zip 纯 App 版:体积最小,需先装 .NET 10 桌面运行时
WinDeploy.exe 仅 GUI 单文件,供 bootstrap.ps1 直链下载

⚠️ 程序未做代码签名时,Windows 可能提示「未知发布者」或被 Defender 拦截 —— 这属于无签名安装类软件的正常现象,可点「更多信息 → 仍要运行」,或参见 README 的「被拦截怎么办」。彻底解决需 Authenticode 代码签名(仓库已内置签名流水线,配置证书后自动生效)。

许可证:CC BY-NC-SA 4.0(署名 / 非商业 / 相同方式共享;作者保留商业权利)。

Full Changelog: v1.2.6...v1.2.6.1