web-dev-qa-db-fra.com

modification d'un Plist à partir de la ligne de commande sur Mac en utilisant les valeurs par défaut

Est-ce que quelqu'un sait comment modifier un fichier Plist à partir de la ligne de commande en utilisant par défaut? Il existe actuellement deux dictionnaires sous le URL types array; Je dois en ajouter un autre.

enter image description here

Chaque commande que j'ai essayée a soit remplacé le dictionnaire entier, soit créé un nouveau tableau appelé URL types au lieu de le modifier. Des idées sur la façon dont cela peut être fait par défaut (l'application Mac de la console) et pas PlistBuddy?

Ouvrez Info.plist dans un éditeur de texte pour voir les identifiants réels.

defaults write Absolute/Path/to/Info.plist CFBundleURLTypes -array-add '<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>Mac App Store URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>macappstore</string>
</array>
</dict>'

pbpaste | pl Convertit le XML au format ancien.

defaults write Info.plist CFBundleURLTypes -array-add '{CFBundleTypeRole=Viewer; FBundleURLName="Mac App Store URL";CFBundleURLSchemes=(macappstore);}'

16
Lri

Les listes de propriétés XML peuvent être affichées directement dans un éditeur de texte, comme le suggère la réponse de Lauri ci-dessus.

Les listes de propriétés binaires (présentes dans de nombreuses applications d'expédition d'Apple) doivent d'abord être converties au format de liste de propriétés XML.

plutil peut être utilisé pour ce faire, dans les deux sens. Faites attention cependant car la liste des propriétés est modifiée en place, vous souhaitez donc faire une copie de la liste des propriétés en premier.

plutil -convert xml1 binary-property-list-to-convert.plist

Et pour le reconvertir en binaire:

plutil -convert binary1 XML-property-list-to-convert.plist
22
ctpenrose
7
Kevin Suttle

Utilisez le -array-add type de valeur:

defaults write /path/to/plist/file "URL Types" -array-add '{"URL Identifier" = "com.myapp.2"; "URL Schemes" = { "two"; }; }'
6
Gordon Davisson