Кто-нибудь знает хороший способ найти (в файловой системе) каждое приложение с заданным идентификатором пакета? NSWorkspace
и Launch Services позволяют искать приложения по идентификатору пакета, но возвращают только один результат. Я подозреваю, что Spotlight (NSMetadataQuery
) может помочь, но я немного не понимаю его API, поэтому не уверен, есть ли соответствующий ключ.
Существует инструмент командной строки lsregister
(внутри LaunchServices.framework), который можно попросить (пере)зарегистрировать все в системе, а затем выдать отчет обо всем, о чем он знает. Полагаться на этот инструмент кажется менее чем идеальным, поскольку он недокументирован, и разбор его результатов может стать проблемой.
(Предыстория: Я создаю приложение для моддинга игр и хочу предоставить пользовательский интерфейс для быстрого выбора из короткого списка поддерживаемых игр, а не требовать от пользователя копаться во всей файловой системе на панели Open. Однако я полагаю, что у пользователя может быть установлено несколько копий игры: релиз и бета, дополнительные копии для моддинга и т.д.)