fix(m196): GUI 产物 PE Subsystem → WINDOWS_GUI(2),并用 AttachConsole 保住 CLI 输出
群友 2026-11-08 实测发布构建「运行时会带一个控制台窗口在底下」。根因:产物 PE 头 Subsystem 仍是 CUI(3)。同一个修复 2026-11-01 做过一次(37d3039),但只改了已被 workspace exclude 的 Slint 树(crates/app),从未到达 iced 产物。 - crates/app-iced/src/main.rs:加 #![cfg_attr(windows, windows_subsystem = "windows")], 并写清为什么放 bin 层而不是 build.rs(PE 子系统是每个 bin 目标的属性)。 - crates/app-iced/src/platform/win32/console.rs(新):AttachConsole(ATTACH_PARENT_PROCESS) 的落点 + 判据 should_attach(纯函数,可断言)。GUI 子系统进程不继承父控制台,实测 从 cmd 启动时三个 std 句柄全是 0;附着后 GetStdHandle 立刻给出控制台句柄(0x0→0x208), 所以不改 std 句柄、不碰用户的重定向(ATTACH_PARENT_PROCESS 只会附到已存在的控制台, 永不新建窗口)。 - packaging/check_pe_subsystem.py(新):读产物 PE 头 Subsystem 字段(GUI 必须 2、 CLI ull 必须 3),非 2 即红;--self-test 注入 5 条合成 PE 回归。 - 接进 release-build.yml(发布侧两槽位)与 ci.yml build job(PR 阶段)。 - guards.yml:unsafe 落点期望集合变成两处(console.rs + transparency.rs),集合相等判据其余不变; 平台层所有「全仓唯一 unsafe 落点」措辞同步改正。
This commit is contained in:
1 parent
30b61e2684
commit
14f9318e09
15 files changed
+693
-36
No files matched your search
@@ -14,7 +14,7 @@
|
||||
//! | `shot` | `window::screenshot` → PNG(验收通道) | 图像比对 |
|
||||
//! | `icons` | 令牌里的 SVG path → iced `svg` 控件 | 画新图标 |
|
||||
//! | [`ui`] | 界面语言的入口层(M106):`LangState` = 用户档位 + 探测结论,目录由它选 | 翻译(那是 `unlucky-i18n`) |
|
||||
//! | `platform` | 平台窗口能力(D36):整窗 α 的纯判据 + win32 FFI(补分层样式 + 下发 α)—— **全仓唯一** `unsafe` 落点 | 窗口创建 / 业务开关 |
|
||||
//! | `platform` | 平台窗口能力(D36):整窗 α 的纯判据 + win32 FFI(补分层样式 + 下发 α)—— `unsafe` 落点之一;另一半是 M196 的控制台附着 | 窗口创建 / 业务开关 |
|
||||
//!
|
||||
//! ## 消费纪律
|
||||
//!
|
||||
|
||||
Reference in new issue
Block a user