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ò.