¿Cómo crear una extensión de nombre de archivo propio?

1

Quiero tener una extensión, llamada .content, para almacenar todos los archivos que están vinculados al nombre de archivo. El sistema operativo debe reconocer la extensión ".content" como una extensión de archivo en lugar de un mapa regular. Solo se debe acceder a los archivos de la extensión abriendo la extensión con la opción "Mostrar contenido del paquete". Espero que alguien pueda ofrecerme una solución a mi problema.

    
pregunta Mr.Eee 29.04.2013 - 19:11

2 respuestas

1

Las carpetas que terminan con .bundle ya actúan de esa manera. Sin embargo, se abren en la Terminal por defecto.

Eltipodearchivosedefineen/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>

Parahacerquelascarpetasqueterminancon.contentseantratadascomopaquetes,agregueunaentradacomoesta:

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

LuegoreconstruyalabasededatosdeServiciosdelanzamientoparaaplicarloscambios:

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

También puede agregar esto a una matriz CFBundleDocumentTypes en la lista de información de cualquier aplicación:

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

Para aplicar los cambios, reconstruya la base de datos de Servicios de lanzamiento o toque el paquete de aplicaciones. Si la solicitud está firmada, modifique el Info.plist invalide la firma del código sin embargo.

    
respondido por el user495470 30.04.2013 - 11:24
1

OS X se entrega con un conjunto de extensiones que se asignan a aplicaciones específicas (y la mayoría de ellas se asignan a las aplicaciones proporcionadas por Apple), por lo que podría pedirle a Apple que realice el cambio, pero eso sería poco probable.

El otro mecanismo para inyectar una extensión específica a la asignación de la aplicación en la base de datos de Launch Services es instalar una aplicación que le indique al sistema que asigne ciertos tipos de archivos y extensiones a esa aplicación específica.

Entonces, para mantener el tema en este tema, vamos a dirigirte a Stack Overflow para preguntar cómo crear tu propia aplicación. Si no está buscando desarrollar una aplicación, también podría modificar la aplicación que desea abrir su extensión de archivo personalizada cambiando su archivo info.plist interal:

Lo siento si este nivel de detalle es más técnico de lo que quieres, pero quería responder esto para cualquier persona que necesite saber cómo modificar las cosas.

    
respondido por el bmike 29.04.2013 - 20:16

Lea otras preguntas en las etiquetas