在使用Flutter auto_updater时,macOS重命名后,Sparkle未能在Finder/Dock中更新应用名
我正在为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的内部配置来启用该标志。
问题:
- 在通过
auto_updater包使用Sparkle时,有没有办法启用SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME? - 是否有推荐的变通方法,以确保在OTA更新过程中应用名称能正确更新?
解决方案
- 不能从Dart/
auto_updater配置中启用SPARKLE_NORMALIZE_INSTALLED_APPLICATION_NAME;它是Sparkle构建时的标志。 - 为支持更新时的重命名,请修补/分叉该插件在macOS上的Sparkle集成,并在编译时启用该标志。
- 最简单的变通方法:保持
.app的捆绑包文件名不变,仅更新显示名称字段(CFBundleDisplayName/CFBundleName)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。