0 votos

¿Qué hace realmente MacOS al abrir un archivo?

Antecedentes de esta pregunta:

He construido una aplicación por LabVIEW para abrir el archivo .tdms, y sé que puede recibir los argumentos que le pasan porque el siguiente código funciona perfectamente:

open -a /Application/My.app --args /path/to/file.tdms

Como la línea de comandos funciona, decidí asociar el .tdms a mi aplicación para poder hacer doble clic en el archivo para abrirlo, y lo consigo modificando My.app/Contents/info.plist .

Y las cosas se ponen interesantes, cuando intento abrir un archivo haciendo doble clic o eligiendo la aplicación en la lista "Abrir con...", aparece una ventana emergente

"Mi.app" está dañado y no se puede abrir. Debes moverla a la Papelera.

Algunas sugerencias xattr -cr /Application/My.app solucionaría el problema, pero a mí no me funciona.

Por eso quiero saber qué hace realmente MacOS en segundo plano cuando se abre un archivo. ¿Cómo pasa los argumentos a la aplicación?


Información adicional:

  1. Utilizo "Open Application Reference" y Property Node en LabVIEW para recibir los argumentos que pasan a mi aplicación.

  2. He añadido el siguiente código en info.plist para asociar el tipo de archivo a mi aplicación:

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>tdms</string>
            </array>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
            <key>CFBundleTypeName</key>
            <string>National Instruments TDMS File</string>
            <key>CFBundleTypeIconFile</key>
            <string>icon.icns</string>
        </dict>
    </array>

1voto

Steve Evans Puntos 155

Lanzamiento de servicios

MacOS incluye Servicios de lanzamiento . Este código es el responsable de lanzar las aplicaciones y de proporcionar a esas aplicaciones los detalles de los archivos que deben abrirse o imprimirse:

Launch Services es una API que permite a una aplicación en ejecución abrir otras aplicaciones o sus archivos de documentos o URLs (localizadores uniformes de recursos) de forma similar al Finder o al Dock. Utilizando Launch Services, una aplicación puede realizar tareas como:

  • Abrir (lanzar o activar) otra aplicación
  • Abrir un documento o una URL en otra aplicación
  • Identificar la aplicación preferida para abrir un determinado documento o URL
  • Registrar información sobre los tipos de archivos de documentos y URLs que una aplicación es capaz de abrir
  • Obtener la información adecuada para mostrar un archivo o una URL en la pantalla, como su icono, el nombre para mostrar y la cadena de tipo
  • Mantener y actualizar el contenido del menú de elementos recientes

AEOpenDocuments

Para abrir archivos, las aplicaciones gráficas en MacOS reciben AppleEvents del tipo odoc :

Evento que proporciona a una aplicación una lista de documentos para abrir. Se envía, por ejemplo, cuando un selecciona uno o más documentos para su aplicación en el Finder y hace doble clic en ellos.

Los argumentos de la aplicación lanzada no incluyen las rutas de los archivos a abrir.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X