簡體   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