Ответ 1
также:
plutil -replace BundleIsRelocatable -bool false plistfilename.plist
Я использовал 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>
Я хочу изменить этот файл с помощью оболочки script. Я попытался использовать defaults write, но ничего не сделал.
Каков способ сделать это? (Например: я хочу установить BundleIsRelocatable в false)
также:
plutil -replace BundleIsRelocatable -bool false plistfilename.plist
Используйте PlistBuddy!
Очень просто и прямо. Пример:
/usr/libexec/PlistBuddy ComponentPropertyList.plist
Command: Set :0:BundleIsRelocatable false
Command: save
Saving...
Command: exit
Вот оно! Теперь BundleIsRelocatable является ложным: D
Использование PlistBuddy, простой учебник ЗДЕСЬ.
/usr/libexec/PlistBuddy -c "Set :BundleIsRelocatable bool false" plistfilename.plist
Он может работать в качестве ОДНОЙ командной строки для обновления ключа/значения.
Я использую его для обновления CFBundleVersion
в целом, который можно найти в этом сообщении.
Немного поздно, но для записи вам просто нужно указать абсолютный путь и добавить расширение .plist к имени файла. Если вы используете script в том же каталоге, что и файл plist, ваш случай будет переведен в:
defaults write $PWD/YourPlistFilename.plist BundleIsRelocatable -bool false
Последний ответ Phil-CB здесь должен быть полезен.
Для использования строки используйте
plutil -replace NameOfProperty -string "yourNewValue" plistFileName.plist
Используя sed
:
sed -i '' '/<key>BundleIsRelocatable</{n;s/true/false/;}' file.plist
Если plist не является XML, сначала запустите plutil -convert xml1 file.plist
.