使用shell脚本编辑plist文件

use*_*062 19 macos shell scripting plist pkgbuild

我使用pkgbuild创建了一个默认的Component Property List文件.该文件看起来像:

<?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>
Run Code Online (Sandbox Code Playgroud)

我想使用shell脚本修改此文件.我尝试使用默认值写但它没有做任何事情.

有什么办法呢?(例如:我想将BundleIsRelocatable设置为false)

jm6*_*666 31

也:

plutil -replace BundleIsRelocatable -bool false plistfilename.plist
Run Code Online (Sandbox Code Playgroud)


kuz*_*zdu 10

对于字符串使用

plutil -replace NameOfProperty -string "yourNewValue" plistFileName.plist
Run Code Online (Sandbox Code Playgroud)


Aec*_*Liu 5

使用PlistBuddy,这里有一个简单的教程。

 /usr/libexec/PlistBuddy -c "Set :BundleIsRelocatable bool false" plistfilename.plist
Run Code Online (Sandbox Code Playgroud)

它可以作为一个命令行运行来更新键/值。我一般用它来更新,可以在这篇文章中CFBundleVersion找到


MrB*_*ser 5

有点晚了,但为了记录,您只需要指定绝对路径并将.plist扩展名添加到文件名。如果您在 plist 文件所在的同一目录中运行脚本,您的案例将被转换为:

defaults write $PWD/YourPlistFilename.plist BundleIsRelocatable -bool false
Run Code Online (Sandbox Code Playgroud)