fix(client/windows): 修桌面/标题栏图标 + 标题文案 + 系统托盘空白

- app_icon.ico 重新由 assets/app-icon.svg 生成(穿山甲品牌图标,多尺寸),
  替换残留的默认 Flutter logo —— 同时修好桌面图标与标题栏小图标。
- 窗口标题去掉 "VPN" 字眼:main.cpp 原生标题 pangolin_vpn → Pangolin;
  main.dart 用 windowManager.setTitle('穿山甲') 显示中文品牌名;
  Runner.rc 的 FileDescription/InternalName/ProductName → Pangolin。
- 系统托盘空白:Windows 走 Win32 Shell_NotifyIcon 只认 .ico(传 PNG 显示空白),
  新增 BMP 编码的 assets/tray_icon.ico,system_tray.dart 按平台选 ico/png。
- 安装包版本 1.0.0 → 1.0.1(pubspec 1.0.1+2)便于区分测试构建。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-22 17:06:05 +08:00
parent eea851737f
commit 94993b21b4
8 changed files with 14 additions and 7 deletions
+2
View File
@@ -31,6 +31,8 @@ Future<void> main() async {
await windowManager.setMinimumSize(const Size(720, 560));
await windowManager.setSize(const Size(920, 640));
await windowManager.center();
// 窗口标题用中文品牌名(不带 "VPN" 字眼);英文环境下原生标题为 "Pangolin"。
await windowManager.setTitle('穿山甲');
}
runApp(const ProviderScope(child: PangolinApp()));
}
+5 -1
View File
@@ -53,7 +53,11 @@ class TrayService with TrayListener, WindowListener {
windowManager.addListener(this);
trayManager.addListener(this);
await trayManager.setIcon('assets/tray_icon.png');
// Windows 托盘走 Win32 Shell_NotifyIcon,只认 .ico(传 PNG 会显示空白);
// macOS/Linux 用 PNG。
await trayManager.setIcon(
Platform.isWindows ? 'assets/tray_icon.ico' : 'assets/tray_icon.png',
);
await trayManager.setToolTip('穿山甲 Pangolin');
await trayManager.setContextMenu(Menu(items: [
MenuItem(key: 'show', label: '显示主界面'),