Cambiar los valores de Info.plist a través de la terminal

Estoy creando mi propia aplicación y me gustaría cambiar algunos valores en mi archivo Info.plist usando la terminal.

He intentado hacerlo defaults write Info.plist CFBundleExecutable -string <Executable>y defaults write Info.plist CFBundleExecutable <Executable>, sin embargo, nunca parece funcionar. No obtengo ningún resultado, así que ni siquiera sé qué es lo que estoy haciendo mal.

Gracias por la ayuda

¿Puede probar la ruta absoluta a su archivo Info.plist? Funciona para mí (PS después de que este plist esté en formato binario)
¡Eso funciono! Si lo agrega como respuesta, lo votaré y lo aceptaré para que obtenga una reputación.

Respuestas (2)

Puede utilizar defaultso plutilherramientas de línea de comandos.

Porque defaultsse parece a esto:

defaults write /absolute/path/to/Info.plist CFBundleExecutable -string <Executable>

para plutil:

plutil -insert CFBundleExecutable -string <Executable> Info.plist 

El valor posterior -insertes una ruta clave separada por .. Por ejemplo

plutil -insert CFBundleDocumentTypes.0.CFBundleTypeExtensions.1 -string "scss" /Applications/Safari.app/Contents/Info.plist

insertará la cadena "scss" en lo profundo de la ruta. Los números posteriores .son para matrices (empiezan con 0).

Gracias, pero ¿cómo se puede insertar en un nivel más profundo del plist (por ejemplo, agregar un elemento a algún diccionario interno)? Aquí simplemente presenta la clave, el tipo y el valor, pero no la ruta de la clave.
@MottiShneor He agregado un ejemplo para una ruta clave más profunda.
@MateuszSzlosek, ¿es posible escribir texto completo usando la escritura predeterminada? es decir, texto completo en un archivo para reemplazar el contenido con este nuevo contenido basado en texto?
@momomo No estoy seguro de entender completamente lo que quieres decir con eso. Por favor haga una nueva pregunta con más detalles.
@MateuszSzlosek Está bien, lo resolví. Puede convertir un archivo xml basado en texto en un archivo plist binario. Usando eso, puedo editar el xml como deseo desde bash, luego guardarlo/escribirlo todo, en lugar de solo escribir pequeñas partes.

OBTENER valor: clave sin formato de suministro

/usr/libexec/PlistBuddy -c "Print CFBundleExecutable" Info.plist

SET Value: proporciona la clave y el valor sin procesar

/usr/libexec/PlistBuddy -c "Set CFBundleExecutable <Executable>" Info.plist