繁体   English   中英

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

[英]OS X: Setting at runtime the Application name as it appears in Dock and Menu Bar

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

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

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

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

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

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

- 比尔芝士

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

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

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

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

该标签来自您的Info.plist,我不相信它在推出后再次被咨询过。 如果你想让一个父应用程序在修改它的Info.plist之后什么也不做,只是启动真实应用程序(可能来自它自己的包内),那么这可能会给你你想要的效果。 不过,你会在发布时获得两个图标。

OS X应用程序通常不会与多个实例一起运行。 看看Apple开发的任何应用程序。 允许多个文档/窗口更常见,在这种情况下,每个窗口可以是根窗口或非根窗口。

但是,允许root身份验证的最常用方法是使用一个挂锁图标,可以单击以通过密码提示切换到root模式,这可以在许多“系统偏好设置”面板中看到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM