2010-10-23 6 views
1

Dans une application Cocoa basée sur des documents, les extensions de fichiers gérées sont répertoriées dans le fichier Info.plist de l'application.Autoriser les bundles/plugins à ajouter aux extensions de document prises en charge par l'application Cocoa?

L'application que je suis en train de créer nécessitera un ensemble chargeable pour chaque type de fichier ouvert. En tant que tel, j'aimerais que la présence de bundles modifie la façon dont mon application s'enregistre en manipulant certains types de fichiers.

Par exemple, si le HTML.bundle est installé, mon application devrait permettre l'ouverture de documents HTML, mais si le paquet est absent, ce ne devrait pas être le cas.

Est-ce que ce paramètre doit être défini au niveau de l'application ou peut-il être distribué via les ensembles installés pour l'application? Je veux parler de "Types de document" dans Info.plist d'une application basée sur le document.

Répondre

1

Vous devriez réécrire le fichier Info.plist dans l'application:

if (bundle_installed(@"HTML.bundle")) { 
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:PATH_TO_PLIST]; 

    /* add/remove things to/from dict here */ 

    [dict writeToFile:PATH_TO_PLIST atomically:YES]; // atomically is important! Must be YES!! 
} 

Ceci est très facile à mettre en œuvre, mais cependant, votre application doit être redémarrée pour le faire accomplir les changements.


Vous devez ajouter un back-up Info.plist dans le répertoire Resources dans le cas où quelque chose se passe mal.

+0

Merci :) Je peux faire face à un redémarrage de l'application. Je suis sur le point de commencer maintenant. Nous verrons comment je vais. – d11wtq

+0

Vous devez être en cours d'exécution en tant qu'administrateur pour que cela fonctionne aussi (sur la plupart des ordinateurs), ce qui le rend plutôt icky –

Questions connexes