2011-12-17 11 views
13

È possibile assegnare in modo dinamico CFBundleDocumentTypes all'applicazione Cocoa? Significa che durante la fase di esecuzione posso assegnare più estensioni per la mia app da gestire.È possibile assegnare in modo dinamico CFBundleDocumentTypes all'applicazione Cocoa?

Attualmente ho impostato alcune estensioni per gestire l'app utilizzando CFBundleDocumentTypes in Info.plist, ma vorrei farlo attraverso il codice mentre l'applicazione è in esecuzione (durante l'esecuzione). Fondamentalmente posso rendere consapevoli i servizi di lancio delle nuove estensioni senza modificare il file Info.plist.

Grazie.

risposta

9

Al momento non è disponibile l'API pubblica per un'applicazione per la registrazione (in) dinamica dei tipi di documento con i servizi di avvio durante il runtime.

Open Emu affronta questo problema. Gli utenti sono in grado di scaricare/installare selettivamente gli emulatori, che sono pacchetti i cui file Info.plist definiscono i tipi di documento. Dopo aver installato un emulatore, i tipi definiti nel pacchetto devono essere parte dei tipi definiti nell'applicazione Info.plist. Apri Emu riscrive l'applicazione Info.plist per farlo - vedi -updateInfoPlist in OEGameDocumentController.

Nota che la sovrascrittura del pacchetto Info.plist è una violazione delle norme del Mac App Store.

Abbiamo filed radars che richiede il runtime (un) registrazione dei tipi di documento. Ti suggerisco di scriverne un altro, che dovrebbe essere chiuso come duplicato di #2526726. Anche se si tratta di un duplicato, è importante archiviarlo comunque in modo che Apple abbia una stima del numero di persone che hanno bisogno di questa funzione.

Tuttavia, potrebbe essere possibile tramite SPI. Quando stavo osservando questo, sono incappato su _LSRegisterItemFromItemInfo() in Launch Services.

Problemi correlati