2011-12-17 9 views
13

¿Puede asignar dinámicamente CFBundleDocumentTypes a su aplicación Cocoa? Significado durante el tiempo de ejecución puedo asignar más extensiones para que maneje mi aplicación.¿Puede asignar dinámicamente CFBundleDocumentTypes a su aplicación Cocoa?

Actualmente configuré algunas extensiones para que mi aplicación las maneje usando CFBundleDocumentTypes en Info.plist, pero me gustaría hacer esto a través del código mientras la aplicación se está ejecutando (durante el tiempo de ejecución). Básicamente, puedo hacer que los servicios de lanzamiento estén al tanto de las nuevas extensiones sin modificar el archivo Info.plist.

Gracias.

Respuesta

9

Por el momento, no existe una API pública para una aplicación para registrar (un) de forma dinámica los tipos de documentos con Servicios de inicio durante el tiempo de ejecución.

Open Emu enfrenta este mismo problema. Los usuarios pueden descargar/instalar selectivamente emuladores, que son paquetes cuyos archivos Info.plist definen tipos de documentos. Al instalar un emulador, los tipos definidos en el paquete deben ser parte de los tipos definidos en la aplicación Info.plist. Open Emu reescribe la aplicación Info.plist para hacerlo - ver -updateInfoPlist in OEGameDocumentController.

Tenga en cuenta que sobrescribir el paquete Info.plist es una violación de la política de Mac App Store.

Tenemos filed radars solicitando el registro en tiempo de ejecución (un) de los tipos de documentos. Le sugiero que presente también otro, que debe cerrarse como un duplicado de #2526726. Incluso si es un duplicado, es importante archivarlo de todos modos para que Apple tenga una estimación del número de personas que necesitan esta característica.

Sin embargo, podría ser posible a través de SPI. Cuando estaba investigando esto, me encontré con _LSRegisterItemFromItemInfo() en Servicios de lanzamiento.

Cuestiones relacionadas