用途:记录 Project Memory 交互式终端在 Windows 上显示正确图标的机制,并指导在其它 Project Memory GUI 二进制中复现。
主要能力:区分两层图标来源。可执行文件图标为编译期 Win32 资源,来自 interactive-terminal/resources/itpm-icon.ico,由 build.rs 通过 winresource 嵌入:set_icon("resources/itpm-icon.ico") 与 set_manifest_file("resources/app.manifest"),用于任务栏按钮、Alt+Tab 条目和默认窗口图标。托盘图标为运行时 QML SystemTrayIcon,绑定 terminalApp.trayIconUrl,由 Rust 的 resolve_tray_icon_url() 解析 file:/// URL,搜索顺序为 <exe_dir>/itpm-icon.ico、<exe_dir>/resources/itpm-icon.ico、<exe_dir>/../../resources/itpm-icon.ico,并有 .svg 回退。main.rs 使用 #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 抑制发布版控制台窗口;app.manifest 设置 DPI 感知。
使用方式:在 Windows build-dependencies 加入 winresource;在 build.rs 中嵌入图标与清单;将 itpm-icon.ico 纳入版本控制;若用托盘图标,暴露运行时路径/URL 属性并在 QML 绑定;部署时把托盘图标资源放到可执行文件附近或提供确定性回退路径。
适用场景:Windows 桌面 GUI 应用图标配置与复现。
限制:窗口/任务栏图标来自嵌入 PE 资源,托盘图标来自运行时文件解析,二者互不保证;托盘图标缺失时先检查运行时图标文件位置。验证需构建发布版并正常启动,确认任务栏、标题栏与托盘图标;排查时检查 build.rs 是否执行、set_icon 是否指向有效 .ico、是否需清理重建、候选路径是否存在图标文件、stderr 日志中的 Tray icon resolved 或 WARNING: No tray icon found,以及是否每次启动同一可执行文件、部署是否丢失图标资源。