OS X: Установка во времени выполнения Имя приложения, как это появляется в Прикреплении и Строке меню

У меня есть приложение, которое может быть запущено с текущим пользователем или с корневыми полномочиями.

На самом деле существует возможность что выполнение приложения дважды одновременно - однажды при текущем пользователе и однажды как корень.

Мне нравится сообщать пользователю, когда приложение работает под корнем. В настоящее время я показываю это в его заголовке окна, но я предпочел бы менять имя приложения так, чтобы оно считало "Appname (Корень)" в соответствующих случаях. Тем путем имя появилось бы и в строке меню и в Прикреплении с этой "корневой" информацией, и это позволит пользователю говорить, какой из этих двух экземпляров приложения в Прикреплении является корневой версией.

Кто-то знает, может ли имя приложения измениться кодом, т.е. самим приложением, или его средством запуска?

В противном случае моя единственная опция, кажется, добавляет значок к Значку панелей, который говорит "корень", но это - мое последнее средство, поскольку это не будет работать на строку меню, ни на другие инструменты, которые отображают названия приложения (т.е. другие средства запуска приложения, такие как DragThing).

6
задан Thomas Tempelmann 16 December 2009 в 22:47
поделиться

3 ответа

… Существует по крайней мере пять имен приложений, плавающих вокруг, по крайней мере, концептуально: (1) имя файла, которое видит Finder, которое в случае пакета приложения является именем пакета (связки); (2) имя исполняемого файла внутри пакета, (3) длинное имя, используемое во многих местах только для отображения; (4) короткое имя, используемое в качестве заголовка меню приложения и в некоторых других местах, где длинное имя не подходит для отображения; и (5) имя процесса запущенного приложения. Они не всегда одинаковы, особенно в продуктах Microsoft и Adobe.

- Билл Чизман

Насколько я могу судить, имя в доке - это имя пакета приложения (без ".app") в файловой системе .

Значение под ключом CFBundleName в info.plist - это то, что отображается в строке меню .

Насколько мне известно, изменение любого из них во время выполнения не сработает ... но что вы можете иметь две версии вашего приложения, корневую и некорневую, внутри вашего пользовательского пакета .app. Когда пользовательское приложение запускается, оно проверяет, запущено ли оно от имени пользователя root или нет, и запускает соответствующую копию реального приложения с CFBundleName и нужным именем файла.

I Хотел бы я знать более элегантное решение.

6
ответ дан 17 December 2019 в 02:29
поделиться

Этот лейбл взят из вашего Info.plist, и я не верю, что к нему когда-либо снова обращались после того, как он был запущен. Если вы хотите иметь родительское приложение, которое ничего не делает, кроме запуска реального приложения (возможно, из собственного пакета) после изменения его Info.plist, это может дать вам эффект, на который вы надеетесь. Тем не менее, во время запуска вы увидите два подпрыгивающих значка.

0
ответ дан 17 December 2019 в 02:29
поделиться

Приложения OS X обычно не работают с несколькими экземплярами. Посмотрите, например, на любое приложение, разработанное Apple. Чаще всего разрешается создание нескольких документов / окон, в этом случае каждое окно может быть корневым или некорневым окном.

Однако наиболее распространенный способ разрешить корневую аутентификацию - иметь значок замка, который может нажмите, чтобы переключиться в режим root с запросом пароля, это можно увидеть на многих панелях системных настроек.

0
ответ дан 17 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: