OS X:在运行时设置Dock和菜单栏中显示的应用程序名称

Tho*_*ann 6 macos dock

我有一个可以使用当前用户或root权限启动的应用程序.

事实上,应用程序可能同时运行两次 - 一次在当前用户下,一次在root下.

我想在应用程序在root下运行时通知用户.目前,我在其窗口标题中显示了这一点,但我更愿意更改应用程序的名称,以便在适当的位置显示"Appname(Root)".这样,名称将出现在菜单栏和Dock中,带有这个"根"信息,它将允许用户告诉Dock中的两个应用程序实例中的哪一个是根版本.

有人知道应用程序名称是否可以通过代码更改,即应用程序本身或其启动程序?

如果没有,我唯一的选择似乎是在Dock图标上添加一个徽章,上面写着"root",但这是我的最后一招,因为它不适用于菜单栏,也不适用于显示应用名称的其他工具(即其他应用程序启动器,如DragThing).

Vin*_*ble 6

...至少在概念上至少有五个应用程序名称:(1)Finder看到的文件名,在应用程序包的情况下是包(bundle)名称; (2)包内可执行文件的名称,(3)在很多地方使用的长名称仅用于显示目的; (4)用作申请菜单​​标题的短名称,以及长名称不适合显示目的的其他一些地方; (5)正在运行的应用程序的进程名称.它们并不总是相同,尤其是在Microsoft和Adobe产品中.

- 比尔芝士

据我所知,dock中的名称是文件系统上的应用程序包名称(无".app").

CFBundleNameinfo.plist中键下的值是菜单栏中显示的值.

据我所知,在运行时更改这些内容并不起作用......但是你可以做的是在面向用户的.app包中有两个版本的应用程序,一个root和非root版本.当启动面向用户的应用程序时,它会检查它是否以root用户身份运行,并启动真实应用程序的相应副本,该应用程序具有CFBundleName您想要的文件名.

我希望我知道更优雅的解决方案.