在使用Flutter auto_updater时,macOS重命名后,Sparkle未能在Finder/Dock中更新应用名

移动开发 2026-07-10

我正在为macOS开发一个Flutter桌面应用,并使用 auto_updater 包(内部使用Sparkle)来处理OTA更新。

我们最近引入了一项变更,应用名称(捆绑显示名称)已经更新。更新流程运行正常,新版本能够成功下载并安装。然而,更新完成后:

  • 应用名称在 /Applications 目录(Finder)中 不会改变
  • Dock仍然显示旧的应用名称

从Sparkle的仓库,我发现要在更新期间正确处理应用重命名需要以下两点(参考:https://github.com/sparkle-project/Sparkle/pull/1444):

  • 更新 SUBundleName
  • 启用 SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME 标志

在典型的原生macOS设置中,这个标志在Sparkle的 commonConfig.xccconfig 中配置。然而,由于我使用的是带有 auto_updater 的Flutter,无法直接访问Sparkle的内部配置来启用该标志。

问题:

  1. 在通过 auto_updater 包使用Sparkle时,有没有办法启用 SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME
  2. 是否有推荐的变通方法,以确保在OTA更新过程中应用名称能正确更新?

解决方案

  • 不能从Dart/auto_updater 配置中启用 SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME;它是Sparkle构建时的标志。
  • 为支持更新时的重命名,请修补/分叉该插件在macOS上的Sparkle集成,并在编译时启用该标志。
  • 最简单的变通方法:保持 .app 的捆绑包文件名不变,仅更新显示名称字段(CFBundleDisplayName / CFBundleName
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章