【问题标题】:macOS appName not show the newest on the dock and Application directorymacOS appName 不在扩展坞和应用程序目录上显示最新的
【发布时间】:2021-11-28 20:34:31
【问题描述】:

我的旧应用名为dd

现在我们将应用重命名为me,并通过更新来更改图标。

最新应用由electron-builder 构建,用于跨平台。

升级后应用可以正常运行,但the dockthe Finder Application directory上的应用名称没有改变。

Finder 应用程序目录上的图标立即更改,但在 dock 必须完成退出并重新启动时,图标将更改。

应用名称永远不会更改为新名称。

我尝试设置 resource/xx.lproj/InfoPlist.strings 也不起作用。

InfoPlist.strings

"CFBundleDisplayName" = "new app name";
"CFBundleName" = "new app name";

有谁知道发生了什么以及如何解决这个问题?

对不起我的英语

【问题讨论】:

  • 尝试删除您的应用并重新安装。
  • @Turtleeeeee 在我的公司,这个应用程序有四十万用户。我不能让每个人都这样做...最好以编程方式进行
  • 您是否在 info.plist 中将捆绑显示名称设置为 ${PRODUCT_NAME}?
  • 是的,我做了...,这种情况是旧应用程序升级到新应用程序(技术架构已更改,它们具有相同的捆绑 ID 和签名),如果我直接安装新应用程序,一切都是正确的。
  • 如果苹果支持刷新特定应用信息就好了

标签: macos electron-builder


【解决方案1】:

终于找到了解决办法。

应用运行3s后首先执行以下代码

execSync('mv /Applications/Old.app /Applications/NewName.app')

为什么在跑了3s之后(不确定,可能更少或更多)?因为我立即重命名应用程序会崩溃。如果延迟一些时间,它的工作原理。

然后我解析~/Library/Preferences/com.apple.dock.plist 以通过bundle-identifierfile-label_CFURLString 获取应用索引

然后,在child_process中执行一些命令行代码

// delete the app on the dock by index
execSync(`plutil -remove  persistent-apps.${index} ~/Library/Preferences/com.apple.dock.plist`
execSync(`plutil -insert persistent-apps.${index} -xml "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/NewAppName.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>" ~/Library/Preferences/com.apple.dock.plist & killall Dock`)

最后

spawn('open', ['-n', '-a', '/Applications/NewAppName.app']);
app.quit();

此解决方案将使屏幕闪烁一次以刷新the dock

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2021-01-21
    • 2020-02-04
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多