[Flutter Desktop] Windows 应用产品化指南 (一):应用重命名与版本发布闭环

一、 前言:告别 “client_jingying_tech…”

在 Flutter Windows 开发初期,我们通常只关注功能实现。但在交付给客户之前,必须解决一个尴尬的问题:
默认编译出来的可执行文件通常叫 client_jingying_tech_inverter_desktop.exe(取自 pubspec.yaml 的包名),且在任务管理器和文件属性中没有任何厂商信息。

本文将记录如何通过修改底层构建配置,完成应用的“身份重塑”,并建立标准的 Git 发布流。

二、 身份重塑 (Identity Refactoring)

Flutter Windows 的构建系统基于 CMake。要修改应用名称和元数据,我们需要深入 windows/ 目录。

1. 修改二进制文件名 (.exe)

目标:将 runner.exe 或长包名修改为简洁的 PV_Monitor.exe

操作文件: windows/CMakeLists.txt

1
2
3
4
5
# 找到 BINARY_NAME 定义变量
# set(BINARY_NAME "client_jingying_tech_inverter_desktop") <-- 原来的

# 修改为产品名称 (建议纯英文,无空格)
set(BINARY_NAME "PV_Monitor")

2. 修改应用元数据 (Metadata)

目标:完善文件属性中的“详细信息”,包括版权、版本、公司名等。

操作文件: windows/runner/Runner.rc

找到 VS_VERSION_INFO 代码块,修改 StringFileInfo 下的字段:

代码段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904e4"
BEGIN
VALUE "CompanyName", "JingYing Tech"
VALUE "FileDescription", "PV Monitor System for Inverter"
VALUE "FileVersion", "0.0.1"
VALUE "InternalName", "PV_Monitor"
VALUE "LegalCopyright", "Copyright (C) 2025 LeoEric. All rights reserved."
VALUE "OriginalFilename", "PV_Monitor.exe"
VALUE "ProductName", "PV Monitor System"
VALUE "ProductVersion", "0.0.1"
END
END
...
END

三、 版本号对齐 (Version Alignment)

在发布前,必须确保“三个地方”的版本号一致,避免“代码是 V1.0,包名是 V0.1”的低级错误。

  1. 构建配置: pubspec.yaml

    YAML

    1
    version: 0.0.1+1
  2. UI 显示: lib/ui/main_screen.dart (或你的关于页面)

    Dart

    1
    Text("V0.0.1 Beta", style: ...)
  3. 原生资源: windows/runner/Runner.rc (如上一步所示)

四、 构建与发布流 (Build & Release Flow)

1. 清理与编译

修改了 C++ 层配置(CMake/RC),必须清理缓存。

PowerShell

1
2
flutter clean
flutter build windows --release

2. Git Tagging (打标)

符合 DevOps 规范的发布必须对应 Git 历史上的一个 Tag。

PowerShell

1
2
3
4
5
6
7
8
9
# 1. 提交更改
git add .
git commit -m "chore: bump version to v0.0.1, rename binary to PV_Monitor"

# 2. 打标签
git tag v0.0.1

# 3. 推送代码和标签
git push origin main --tags

3. Gitea Release

  1. 进入 Gitea 仓库 -> Releases

  2. New Release -> 选择 Tag v0.0.1

  3. 编写更新日志 (Changelog)。

  4. 上传最终的制品(将在下一篇博客中介绍如何打包)。

五、 总结

通过以上步骤,我们将一个“工程 Demo”转变成了一个具备完整身份信息的“软件产品”。这是专业化交付的第一步。