Предпочитаемый путь к приложениям на OSX? - PullRequest
4 голосов
/ 29 сентября 2008

Я хочу иметь возможность запускать текстовый редактор из моего приложения, как указано пользователем в переменной среды TEXT_EDITOR. Теперь, предполагая, что в этой переменной ничего нет, я хочу по умолчанию использовать программу TextEdit, которая поставляется с OSX. Кошерно ли жестко кодировать /Applications/TextEdit.app/Contents/MacOS/TextEdit в мое приложение или есть лучший способ вызвать программу?

Редактировать: для записи я ограничен запуском определенного пути приложения в C. Я не открываю путь к текстовому файлу.

Редактировать 2: Серьезно, люди, я не открываю файл здесь. Я спрашиваю о пути приложения по причине.

Ответы [ 5 ]

4 голосов
/ 30 сентября 2008

Во втором редактировании это звучит так, будто вы просто хотите получить путь к TextEdit, это можно легко сделать с помощью метода NSWorkspace absolutePathForAppBundleWithIdentifier:

NSString *path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.apple.TextEdit"];
4 голосов
/ 29 сентября 2008

Mac OS X имеет механизм, называемый «унифицированными идентификаторами типов», который он использует для отслеживания связей между типами данных и приложениями, которые могут их обрабатывать. Подсистема, которая управляет этим, является Launch Services. Вы можете сделать одну из двух вещей:

  • Если у вас есть файл с достаточно известным расширением пути, например, .txt, вы можете просто попросить NSWorkspace открыть файл в соответствующем приложении.

  • Если у вас нет хорошо известного расширения пути, но вы знаете тип данных, вы можете попросить Launch Services найти приложение по умолчанию для этого типа, а затем попросить NSWorkspace открыть файл в этом конкретном приложении.

Если вы сделаете это таким образом, вы получите то же поведение, что и в Finder, и вам не придется использовать fork () / exec () или использовать system () только для открытия файла.

2 голосов
/ 29 сентября 2008

Я считаю, что жесткое кодирование «Приложения» не будет работать, если языковая настройка пользователя не английская Например, в Норске папка «Приложения» называется «Программист».

Документ Apple по интернационализации: здесь . Начиная с 45 страницы есть раздел об обработке локализованных путей.

0 голосов
/ 29 сентября 2008

Вы можете запустить следующую команду из вашего приложения:

open <full path to text file>

Откроется текстовый файл в текстовом редакторе по умолчанию. Вы можете открыть файл любого типа, используя команду open.

0 голосов
/ 29 сентября 2008

Я полагаю, что Mac OS X предоставляет механизм приложения по умолчанию, так что .txt будет открываться в TextEdit.app или Emacs или GVim или любом другом, указанном пользователем. Однако я ничего не смог найти в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...