私はpkgbuildを使用してデフォルトのコンポーネントプロパティリストファイルを作成しました。ファイルは次のようになります。
<?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>
シェルスクリプトを使用してこのファイルを変更したいと思います。 defaults writeを使用してみましたが、何も実行されませんでした。
それを行う方法は何ですか?(例:BundleIsRelocatableをfalseに設定したい)
また:
plutil -replace BundleIsRelocatable -bool false plistfilename.plist
PlistBuddy、ここでは簡単なチュートリアルを使用します。
/usr/libexec/PlistBuddy -c "Set :BundleIsRelocatable bool false" plistfilename.plist
キー/値を更新する1つのコマンドラインとして実行できます。私は一般的にCFBundleVersion
を更新するために使用します。これは この投稿内 で見つかります。
文字列用
plutil -replace NameOfProperty -string "yourNewValue" plistFileName.plist
少し遅れますが、レコードの場合は、絶対パスを指定して、ファイル名に。plist拡張子を追加するだけです。 plistファイルと同じディレクトリでスクリプトを実行している場合、ケースは次のように変換されます。
defaults write $PWD/YourPlistFilename.plist BundleIsRelocatable -bool false
PlistBuddy を使用してください!
非常にシンプルでわかりやすい。例:
/usr/libexec/PlistBuddy ComponentPropertyList.plist
Command: Set :0:BundleIsRelocatable false
Command: save
Saving...
Command: exit
それでおしまい!今BundleIsRelocatableはfalseです:D
sed
の使用:
sed -i '' '/<key>BundleIsRelocatable</{n;s/true/false/;}' file.plist
PlistがXMLでない場合は、最初にplutil -convert xml1 file.plist
を実行します。
Phil-CBの最後の応答 here が役立つはずです。