Vraag Kun je CFBundleDocumentTypes dynamisch toewijzen aan je Cocoa-applicatie?


Kun je CFBundleDocumentTypes dynamisch toewijzen aan je Cocoa-applicatie? Betekenis tijdens runtime kan ik meer extensies toewijzen aan mijn app om te verwerken.

Momenteel stel ik een aantal uitbreidingen in voor mijn app om CFBundleDocumentTypes in de Info.plist te gebruiken, maar ik zou dit graag doen via code terwijl de toepassing wordt uitgevoerd (tijdens runtime). In principe kan ik Launch Services op de hoogte houden van nieuwe extensies zonder het bestand Info.plist aan te passen.

Bedankt.


13
2017-12-17 01:56


oorsprong


antwoorden:


Op dit moment is er geen openbare API1 voor een toepassing voor het dynamisch (ont) registreren van documenttypen met Launch Services tijdens runtime.

Open Emu staat voor dit probleem. Gebruikers kunnen selectief emulators downloaden / installeren. Dit zijn bundels waarvan de Info.plist-bestanden documenttypen definiëren. Na het installeren van een emulator, moeten de typen die in de bundel zijn gedefinieerd deel uitmaken van de typen zoals gedefinieerd in de toepassing Info.plist. Open Emu herschrijft de applicatie Info.plist om dit te doen - zie -updateInfoPlist in OEGameDocumentController.

Merk op dat het overschrijven van de bundel Info.plist een overtreding is van het beleid van de Mac App Store.

We hebben opgeslagen radars vragen om runtime (on) registratie van documenttypen. Ik stel voor dat je ook nog een bestand opstelt, dat als een duplicaat moet worden gesloten # 2526726. Zelfs als het een duplicaat is, is het belangrijk om het toch in te dienen, zodat Apple een schatting kan maken van het aantal mensen dat deze functie nodig heeft.

1Het kan mogelijk zijn via SPI. Toen ik dit onderzocht, struikelde ik _LSRegisterItemFromItemInfo() in Launch Services.


9
2017-12-22 09:22