修复: 测试进程 comctl32 延迟加载与流式 usage 断言同步

lib 测试无内嵌窗口清单,GUI 依赖静态绑定 comctl32 缺导出致测试进程启动即崩
改 DELAYLOAD 推迟绑定,测试进程不触碰 GUI 入口;app 端清单选 v6 行为不变
流式 usage 改为 message_start 同帧携带初始快照,断言对齐该语义
This commit is contained in:
lxy
2026-10-01 02:41:21 +08:00
parent 04acc4297d
commit df3ed55d01
3 changed files with 25 additions and 4 deletions
+9
View File
@@ -17,4 +17,13 @@ fn main() {
println!("cargo:rustc-env=MCP_APP_IDENTIFIER={}", identifier);
}
}
// 测试二进制(lib test)没有 tauri 给 bin 内嵌的窗口清单,而 GUI 依赖(tao/muda/tray_icon)
// 会静态导入 comctl32 的 TaskDialogIndirect 等导出(仅存在于 SxS v6 程序集),无清单时
// 加载器绑定 System32 的 5.82 版(缺这些导出),进程启动即 STATUS_ENTRYPOINT_NOT_FOUND,
// cargo test 全部无法运行。用延迟加载把 comctl32 绑定推迟到首次调用,测试进程从不触碰
// GUI 入口即永不解析;app 端 bin 自带清单选到 v6,行为不变。不用 /MANIFEST:EMBED 方案是
// 因为它会与 tauri 内嵌的资源清单产生重复 RT_MANIFEST,链接失败。
println!("cargo:rustc-link-arg=/DELAYLOAD:comctl32.dll");
println!("cargo:rustc-link-lib=delayimp");
}