J'ai utilisé pkgbuild pour créer un fichier de liste de propriétés de composant par défaut. Le fichier ressemble à:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList- 1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>BundleHasStrictIdentifier</key>
<true/>
<key>BundleIsRelocatable</key>
<true/>
<key>BundleIsVersionChecked</key>
<true/>
<key>BundleOverwriteAction</key>
<string>upgrade</string>
<key>RootRelativeBundlePath</key>
<string>MyApp.app</string>
</dict>
</array>
</plist>
Je souhaite modifier ce fichier à l'aide d'un script Shell. J'ai essayé d'utiliser par défaut write mais cela n'a rien fait.
Quel est le moyen de le faire? (Par exemple: je veux définir BundleIsRelocatable sur false)
Également:
plutil -replace BundleIsRelocatable -bool false plistfilename.plist
Utiliser PlistBuddy, un simple tutoriel ICI.
/usr/libexec/PlistBuddy -c "Set :BundleIsRelocatable bool false" plistfilename.plist
Il peut s’exécuter en tant que UNE ligne de commande pour mettre à jour la clé/valeur. Je l’utilise pour mettre à jour CFBundleVersion
généralement, ce qui peut être trouvé dans cet article .
Pour une utilisation de chaîne
plutil -replace NameOfProperty -string "yourNewValue" plistFileName.plist
Un peu tard, mais pour l'enregistrement, il vous suffit de spécifier le chemin absolu ET d'ajouter l'extension .plist au nom du fichier. Si vous exécutez votre script dans le même répertoire que le fichier plist, votre cas sera traduit en:
defaults write $PWD/YourPlistFilename.plist BundleIsRelocatable -bool false
Utilisez PlistBuddy !
Très simple et direct. Exemple:
/usr/libexec/PlistBuddy ComponentPropertyList.plist
Command: Set :0:BundleIsRelocatable false
Command: save
Saving...
Command: exit
C'est tout! Maintenant, BundleIsRelocatable est false: D
Utilisation de sed
:
sed -i '' '/<key>BundleIsRelocatable</{n;s/true/false/;}' file.plist
Si le nom de la liste n'est pas XML, exécutez d'abord plutil -convert xml1 file.plist
.
La dernière réponse de Phil-CB ici devrait être utile.