【问题标题】:OS X: Setting at runtime the Application name as it appears in Dock and Menu BarOS X:在运行时设置显示在 Dock 和菜单栏中的应用程序名称
【发布时间】:2010-12-27 11:08:00
【问题描述】:

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

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

我喜欢在应用程序在 root 下运行时通知用户。目前,我在其窗口标题中显示它,但我更愿意更改应用程序的名称,以便它在适当的地方读取“Appname(Root)”。这样,该名称将同时出现在菜单栏和 Dock 中,并带有此“根”信息,并且允许用户判断 Dock 中的两个应用程序实例中的哪一个是根版本。

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

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

【问题讨论】:

    标签: macos dock


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

    Bill Cheeseman

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

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

    据我所知,在运行时更改这些都行不通……但您可以做的是在面向用户的 .app 包中拥有两个版本的应用程序,一个根版本和非根版本.当面向用户的应用程序启动时,它会检查它是否以 root 身份运行,并启动真实应用程序的适当副本,其中包含您想要的CFBundleName 和文件名。

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

    【讨论】:

    • 受过良好教育的答案,谢谢 :) 您对两份副本的建议给了我一个想法:我也许可以在我的应用程序中创建一些指向替代“副本”的符号链接。我会试试看。
    • 嘿,成功了!我在我的应用程序的主文件夹中创建了一个名为“Appname (Root).app”的文件夹,在其中创建了一个“Contents”文件夹,为所有应用程序的 Contents 项创建了符号链接,最后在其中放置了一个修改后的 Info.plist 并带有适当的包名字。
    【解决方案2】:

    该标签来自您的 Info.plist,我认为它在发布后不会再被咨询过。如果您希望有一个父应用程序在修改其 Info.plist 之后只启动真正的应用程序(可能从其自己的包中),那么这可能会给您带来您希望的效果。不过,您会在启动时看到两个图标弹跳。

    【讨论】:

    • 对,我就是这么想的。但是,更改 Info.plist 不是一种选择。
    【解决方案3】:

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

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

    【讨论】:

    • 托拜厄斯,我不明白你在说什么。我知道如何在 root 模式下启动应用程序并对其进行身份验证(我使用“AuthorizationExecuteWithPrivileges”),这不是我的问题。问题是应用程序通常以非 root 模式启动,用户可以请求以 root 模式启动它(通过 AuthorizationExecuteWithPrivileges)。出于设计原因,我不能轻易更改,用户最终可能会得到两个正在运行的应用程序实例,我想告诉他哪个是哪个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2014-11-25
    相关资源
    最近更新 更多