¿Por qué un cambio en la línea de comando a ~ / Library / Preferences / com.apple.LaunchServices.plist no es efectivo de inmediato?

6

Cuando la ventana de información de Finder se usa para asociar archivos de un tipo en particular con una aplicación:

  • la preferencia es efectiva inmediatamente.

Cuando se usa Terminal para hacer una adición comparable a ~/Library/Preferences/com.apple.LaunchServices.plist

  • la preferencia es no efectiva inmediatamente.

Pregunta

¿Por qué Launch Services no respeta inmediatamente una escritura en com.apple.LaunchServices.plist del usuario?

Una respuesta ideal podría ser una referencia a una página en el área de desarrolladores de Apple.

Las respuestas no tienen por qué implicar ejecutar un comando.

Fondo

¿Agente o demonio?

Preguntándome si un demonio o agente realiza cambios en ese .plist efectivo, corrí:

sudo launchctl list

En la lista, bajo el encabezado etiqueta , no veo nada que pueda relacionarse con Servicios de lanzamiento .

Referencias

Una respuesta a la pregunta de desbordamiento de pila ¿Cómo configurar la aplicación predeterminada para tipos de archivos específicos en Mac OS X? sugiere:

  

... para volver a cargar. Puede cerrar sesión, esperar unos minutos o forzar el inicio de los servicios de inicio ...

En mi caso:

La respuesta aceptada a la pregunta del Superusuario ¿Existe una forma más rápida de cambiar las aplicaciones predeterminadas asociadas con los tipos de archivos en OS X? sugiere:

  

... reiniciar el sistema operativo para aplicar los cambios (cerrar y volver a iniciar no es suficiente) ...

: si un reinicio es suficiente, probablemente lleve menos tiempo que matar y luego sembrar la base de datos de Servicios de lanzamiento.

    
pregunta Graham Perrin 29.04.2012 - 16:01

1 respuesta

7

Desde Guía de programación de servicios de lanzamiento (todo énfasis mío):

  

Todas las aplicaciones disponibles en el sistema del usuario deben estar registradas para dar a conocer a Launch Services y copiar su enlace de documentos y otra información en su base de datos. Normalmente no es necesario realizar esta tarea explícitamente, ya que una variedad de servicios y utilidades incorporados en el software del sistema Mac OS X se encargan de ello automáticamente:

     
  • Una herramienta de fondo incorporada, que se ejecuta cada vez que se inicia el sistema o cuando un nuevo usuario inicia sesión , busca automáticamente las carpetas de Aplicaciones en los dominios del sistema, de la red, locales y de usuarios y registra cualquier aplicación nueva que encuentre. ahí. (Esta operación es análoga a la "reconstrucción del escritorio" en versiones anteriores de Mac OS).
  •   
  • El Finder registra automáticamente todas las aplicaciones a medida que las detecta , como cuando se arrastran al disco del usuario o cuando el usuario navega a una carpeta que las contiene.
  •   
  • Cuando el usuario intenta abrir un documento para el que no se puede encontrar ninguna aplicación preferida en la base de datos de Servicios de inicio, el Finder presenta un cuadro de diálogo que le pide al usuario que seleccione una aplicación con la que abrir el documento. Luego registra esa aplicación antes de iniciarla.
  •   

A pesar de estas utilidades de registro automático, a veces puede ser necesario registrar una aplicación explícitamente con los Servicios de lanzamiento. Por ejemplo, aunque se recomienda a los desarrolladores que empaqueten sus aplicaciones para que puedan instalarse simplemente arrastrándolas al disco del usuario, algunas aplicaciones pueden requerir un software de instalación personalizado más elaborado. En tales casos, el instalador debe llamar a una de las funciones de registro de Servicios de lanzamiento LSRegisterFSRef o LSRegisterURL para registrar la aplicación explícitamente.

Tenga en cuenta las llamadas a la API que necesita el único procedimiento manual de registro nombrado ( fuente no disponible en opensource.apple.com , me temo).

Mientras solucionaba un error al procesar los Servicios de inicio en Leopard con FileVault habilitado , noté que ~/Library/Preferences/com.apple.LaunchServices.plist es:

  • procesado solo en el inicio de sesión después del inicio, como datos de entrada a la acumulación de la base de datos de Servicios de lanzamiento propiamente dicha (Leopard habilitado para FileVault a menudo no realizó este paso, lo que resulta en una configuración de usuario aparentemente perdida); y

  • guardado en caché siempre que la máquina no se haya reiniciado.

En pocas palabras, es la capa de persistencia del dominio de usuario de los Servicios de lanzamiento , y las modificaciones a esa capa de persistencia solo se reconocen en el siguiente procesamiento: reinicio o reiniciar .

    
respondido por el kopischke 15.05.2012 - 23:06

Lea otras preguntas en las etiquetas