Modification des valeurs Info.plist via un terminal


5

Je crée ma propre application et j'aimerais modifier certaines valeurs de mon fichier Info.plist à l'aide de terminal.

J'ai essayé de faire defaults write Info.plist CFBundleExecutable -string <Executable>et defaults write Info.plist CFBundleExecutable <Executable>cependant cela ne semble jamais fonctionner. Je ne reçois aucune sortie, alors je ne sais même pas ce que je fais de travers.

Merci pour l'aide


2
Pouvez-vous essayer un chemin absolu vers votre fichier Info.plist? Cela fonctionne pour moi (PS après que cette plist soit au format binaire)
Mateusz Szlosek

Ça a marché! Si vous l'ajoutez comme réponse, je voterai et l'accepterai pour que vous en obteniez la réputation.
iProgram

Réponses:


9

Vous pouvez utiliser defaultsou des plutiloutils de ligne de commande.

Car defaultscela ressemble à ceci:

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

Pour plutil:

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

La valeur après -insertest un chemin de clé séparé par .. Par exemple

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

va insérer "scss" chaîne profondément dans le chemin. Les nombres suivants .sont pour les tableaux (ils commencent par 0).


1
Merci, mais comment pouvez-vous insérer dans un niveau plus profond du plist (par exemple, ajouter un élément à un dictionnaire interne)? Ici, vous ne présentez que la clé, le type et la valeur - mais pas de chemin de clé.
Motti Shneor

@MottiShneor J'ai ajouté un exemple pour un chemin de clé plus profond.
Mateusz Szlosek

1

Pour macOS

GET Value

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

Valeur SET

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.