Подтвердить что ты не робот

Можете ли вы динамически назначать CFBundleDocumentTypes вашему приложению Cocoa?

Можете ли вы динамически назначать CFBundleDocumentTypes для своего приложения Cocoa? Значение во время выполнения может я назначить дополнительные расширения для моего приложения.

В настоящее время я установил некоторые расширения для моего приложения для обработки с использованием CFBundleDocumentTypes в Info.plist, но я хотел бы сделать это с помощью кода во время выполнения приложения (во время выполнения). В основном я могу заставить Launch Services знать о новых расширениях без изменения файла Info.plist.

Спасибо.

4b9b3361

Ответ 1

В настоящий момент нет открытого API 1 для приложения, которое динамически (un) регистрирует типы документов со службами запуска во время выполнения.

Open Emu сталкивается с этой проблемой. Пользователи могут выборочно загружать/устанавливать эмуляторы, которые являются пакетами, чьи файлы Info.plist определяют типы документов. При установке эмулятора типы, определенные в комплекте, должны быть частью типов, определенных в приложении Info.plist. Open Emu перезаписывает приложение Info.plist для этого - см. - updateInfoPlist в OEGameDocumentController.

Обратите внимание, что перезапись пакета Info.plist является нарушением политики магазинов Mac App Store.

У нас есть зарегистрированные радары, требующие регистрации типов документов. Я предлагаю вам добавить еще один файл, который должен быть закрыт как дубликат # 2526726. Даже если его дубликат, его важно записать его в любом случае, чтобы Apple оценила количество людей, которым нужна эта функция.

1 Это может быть возможно через SPI. Когда я изучал это, я наткнулся на _LSRegisterItemFromItemInfo() в Launch Services.