1
0
Files
nex/openspec/changes/fix-windows-desktop-packaging/tasks.md
lanyuanxiaoyao 64dc66afa6 fix: Windows 桌面应用打包问题修复
- 删除通用 desktop target,重命名 platform targets 为简短形式 (desktop-mac/win/linux)
- 构建产物文件名统一为 nex-{os}-{arch}[.exe] 格式
- Windows 托盘图标使用 .ico 格式(运行时按平台选择)
- Windows 原生对话框使用 user32.MessageBoxW 替代 msg * 命令
- 更新 README.md 和 package-macos.sh 中的引用
- 添加单元测试覆盖 MessageBoxW 封装和图标选择逻辑
- 同步更新 desktop-app spec 规范文档
2026-04-22 23:20:39 +08:00

1.8 KiB
Raw Blame History

1. Makefile 重构

  • 1.1 删除通用 desktop target 及其相关 .PHONY 声明
  • 1.2 将 desktop-darwin 重命名为 desktop-mac,产物文件名改为 nex-mac-arm64nex-mac-amd64
  • 1.3 将 desktop-windows 重命名为 desktop-win,产物文件名改为 nex-win-amd64.exe
  • 1.4 将 desktop-linux 产物文件名改为 nex-linux-amd64
  • 1.5 更新 .PHONY 声明和 all target如引用了旧名称

2. Windows 原生对话框

  • 2.1 在 backend/cmd/desktop/main.go 中添加 Windows 平台的 user32.MessageBoxW 调用封装(syscall.NewLazyDLL + syscall.StringToUTF16Ptr),在 showError/showAbout 的 Windows runtime.GOOS 分支内直接调用
  • 2.2 替换 showError 函数的 Windows 分支,使用 MessageBoxW 替代 msg *
  • 2.3 替换 showAbout 函数的 Windows 分支,使用 MessageBoxW 替代 msg *

3. 系统托盘图标修复

  • 3.1 修改 setupSystray 函数中的图标加载逻辑,根据 runtime.GOOS 在 Windows 上加载 assets/icon.ico,其他平台加载 assets/icon.png

4. 文档和脚本更新

  • 4.1 更新 README.md 中的构建命令引用(desktop-darwindesktop-macdesktop-windowsdesktop-windesktop-linux 保持不变或改为 desktop-linux
  • 4.2 更新 scripts/build/package-macos.sh 中对 desktop-darwin 的引用

5. 测试验证

  • 5.1 为 showError/showAbout 的 Windows MessageBoxW 封装编写单元测试(验证参数传递和调用正确性)
  • 5.2 为图标加载的平台选择逻辑编写单元测试(验证 Windows 选 .ico,其他选 .png
  • 5.3 运行 make desktop-win 在 Windows 上验证:产物有 .exe 后缀、双击无控制台窗口、托盘图标正常显示、错误对话框使用原生样式