Come creare la propria estensione del nome file?

2

Voglio avere un'estensione, chiamata .content, per memorizzare tutti i file al suo interno che sono collegati al nome del file. L'estensione ".content" dovrebbe essere riconosciuta dal sistema operativo come un'estensione di file piuttosto che una normale mappa. I file nell'estensione dovrebbero essere raggiunti solo aprendo l'estensione con l'opzione "Mostra contenuto pacchetto". Spero che qualcuno possa offrirmi una soluzione al mio problema.

    
posta Mr.Eee 29.04.2013 - 19:11
fonte

2 risposte

1

Le cartelle che terminano con .bundle agiscono già in questo modo. Per impostazione predefinita, tuttavia, vengono aperti in Terminal.

Iltipodifileèdefinitoin/System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist:

<dict><key>UTTypeConformsTo</key><array><string>com.apple.bundle</string><string>com.apple.package</string></array><key>UTTypeDescription</key><string>bundle</string><key>UTTypeIdentifier</key><string>com.apple.generic-bundle</string><key>UTTypeTagSpecification</key><dict><key>com.apple.ostype</key><string>BNDL</string><key>public.filename-extension</key><string>bundle</string></dict></dict>

Perrenderelecartellecheterminanocon.contentdatrattarecomepacchetti,aggiungiunavocecomequesta:

<dict><key>UTTypeConformsTo</key><array><string>com.apple.bundle</string><string>com.apple.package</string></array><key>UTTypeIdentifier</key><string>my.content</string><key>UTTypeTagSpecification</key><dict><key>public.filename-extension</key><string>content</string></dict></dict>

Quindiricostruireildatabasedeiservizidiavvioperapplicarelemodifiche:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister-kill-domainlocal-domainsystem-domainuser

Puoi anche aggiungere questo a un array CFBundleDocumentTypes nel file Info.plist di qualsiasi applicazione:

<dict>
    <key>CFBundleTypeExtensions</key>
    <array>
        <string>content</string>
    </array>
    <key>CFBundleTypeRole</key>
    <string>None</string>
    <key>LSTypeIsPackage</key>
    <true/>
</dict>

Per applicare le modifiche, ricostruire il database dei servizi di avvio o toccare il pacchetto dell'applicazione. Se l'applicazione è firmata, la modifica di Info.plist invalida la firma del codice però.

    
risposta data 30.04.2013 - 11:24
fonte
1

OS X viene fornito con una serie di estensioni che si associano a specifiche applicazioni (e la maggior parte di queste mappe alle app fornite da Apple) in modo da poter presentare una petizione a Apple per apportare la modifica, ma ciò sarebbe improbabile.

L'altro meccanismo per iniettare un'estensione specifica alla mappatura dell'applicazione nel database di Launch Services consiste nell'installare un'applicazione che dice al sistema di mappare determinati tipi di file ed estensioni a quella specifica applicazione.

Quindi, per mantenere le cose sull'argomento, ti dirigiamo semplicemente su Stack Overflow per chiedere come creare la tua applicazione. Se non stai cercando di sviluppare un'applicazione, puoi anche modificare l'app per cui vuoi aprire l'estensione del file personalizzato modificando il suo file interal info.plist:

Scusa se questo livello di dettaglio è più tecnico di quello che vuoi, ma volevo rispondere a questo per chiunque abbia bisogno di sapere come modificare le cose.

    
risposta data 29.04.2013 - 20:16
fonte

Leggi altre domande sui tag