Я играл с NSWorkspace.Запуск приложений программно
[[NSWorkspace sharedWorkspace] LaunchApplication: @ "Фотографии"] работает
[[NSWorkspace sharedWorkspace] LaunchApplication: @ "Контакты"] делает не работы
[[NSWorkspace sharedWorkspace] launchApplication: @ "/ Applications/Contacts.app"] работает
(Mac OS S ierra)
Итак, мне было интересно, есть ли безопасный способ найти «настоящий» путь к приложению. Может быть, приложение «Контакты» имеет разные имена при различной локализации системы? Почему просто «Фотографии» работают нормально?
Я бы предположил, что из идентификационного идентификатора приложения Apple должен быть путь, чтобы получить путь к приложению, но я ничего не нашел.
Спасибо. Это похоже на то, что я искал. Но как вы можете быть уверены в идентификаторе пакета - или даже быть уверенным, что он будет оставаться постоянным во времени. Я не нашел список в документе APple (хотя вы можете найти списки в Интернете). –
Идентификаторы приложений обычно не изменяются, если нет резких изменений (например, iPhoto был заменен на Photos.app) –
Да, это то, что я имел в виду. В этом случае код с использованием идентификатора пучка будет нарушен. Другим решением может быть использование openURL: [NSURL URLWithString: @ "photos: //"]. Не уверен, что это более стабильно во времени, но я бы сказал, что оба iPhoto и Photos будут поддерживать эту схему URL ... Я приму ваш ответ, если на следующий день ничего лучше не появится. –