¿Cómo uso el comando predeterminado en Grupos de aplicaciones?

4

En OS X Yosemite es posible tener preferencias que se comparten entre varias aplicaciones que están en el mismo grupo de aplicaciones. En el lado de desarrollo de las cosas, es tan simple como configurar el Grupo de aplicaciones y luego usar [[NSUserDefaults alloc] initWithSuiteName:@"TEAMID.com.company.AppGroup"] en lugar del habitual [NSUserDefaults standardUserDefaults] . Estas preferencias se almacenan en ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup.plist .

Lo que estoy tratando de averiguar es cómo modificar esas preferencias desde fuera de la aplicación usando el comando predeterminado. Hasta ahora lo mejor que he encontrado es esto:

defaults write ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup PreferenceName -bool YES

Este tipo de trabajo funciona porque modifica el archivo .plist correcto y actualiza las preferencias que le digo. Pero no parece ser compatible con el almacenamiento en caché que se usa en Yosemite. Tan pronto como la aplicación intenta leer la misma preferencia, vuelve a lo que se estableció anteriormente.

¿Hay alguna forma de hacer que esto funcione de manera confiable?

    
pregunta robotspacer 10.11.2014 - 14:58

1 respuesta

1

Por lo que he podido determinar, todavía no hay una forma adecuada de hacerlo. Sin embargo, puedes hacer que funcione matando a cfprefsd después de usar el comando anterior. Así que solo uso algo como esto en la aplicación Terminal:

defaults write ~/Library/Group\ Containers/TEAMID.com.company.AppGroup/Library/Preferences/TEAMID.com.company.AppGroup PreferenceName -bool YES; killall cfprefsd

No es genial, pero es mejor que nada.

Actualización para macOS Sierra (10.12): Desafortunadamente, el uso de la ruta del archivo ya no funciona. Extrañamente, funciona en archivos que están en otra parte, como si copio una lista de Grupos de aplicaciones en el escritorio, pero no puedo hacer que funcione correctamente en una lista de Grupos de aplicaciones en su ubicación normal.

Vale la pena señalar que man defaults ha incluido esta nota por un tiempo:

  

El comando predeterminado se cambiará en una próxima versión importante para operar solo en los dominios de preferencias. Las utilidades generales de manipulación de plist se plegarán en un programa de línea de comandos diferente.

Como dije, sin embargo, esto no es un problema con plistas arbitrarias, parece específico a las plistas en ~/Library/Group Containers/ .

    
respondido por el robotspacer 09.09.2015 - 23:24

Lea otras preguntas en las etiquetas