【问题标题】:bash add array to plistbash 将数组添加到 plist
【发布时间】:2013-04-10 03:55:07
【问题描述】:

我正在通过 Cydia 制作一个可安装的包,它将编写 com.intelliborn.intelliscreenx 对此:

<?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">
<dict>
    <key>Hidden</key>
    <array>
        <string>libactivator</string>
        <string>com.aaronash.BarrelSettings</string>
        <string>com.iptm.bigboss.sbsettings</string>
    </array>
</dict>
</plist>

但我不知道如何将 postinst 脚本写入正确添加的位置,并将 postrmv 脚本写入正确删除的位置。

安装此包后 hidden.plist 应如下所示:

<?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">
<dict>
    <key>Hidden</key>
    <array>
        <string>libactivator</string>
        <string>com.aaronash.BarrelSettings</string>
        <string>com.iptm.bigboss.sbsettings</string>
            <string>com.intelliborn.intelliscreenx</string>
    </array>
</dict>

我的 postinst 和 postrmv 脚本如下所示:

后期

#!/bin/bash

declare -a cydia
cydia=($CYDIA)

if [[ $1 == install ]]; then
    if [[ ${CYDIA+@} ]]; then
        eval "echo 'finish:restart' >&${cydia[0]}"
    fi
fi
echo -e "\n\<string>com.intelliborn.intelliscreenx</string>\n" >> /var/mobile/Library/LibHide/hidden.plist

exit 0

postrmv

#!/bin/bash
echo " " >> /var/mobile/Library/LibHide/
sed -i 's/<string>com.intelliborn.intelliscreenx</string>\n" >> /var/mobile/Library/LibHide/hidden.plist

declare -a cydia
cydia=($CYDIA)

if [[ $1 == install ]]; then
    if [[ ${CYDIA+@} ]]; then
        eval "echo 'finish:restart' >&${cydia[0]}"
    fi
fi

exit 0

【问题讨论】:

    标签: bash post-install


    【解决方案1】:

    您可以将 plutil 用于 iPhone,因为它适用于 plists 文件。

    在您的 cydia 包的控制文件中,将以下内容添加到您的 pre-depends 中,如下例所示,这样如果预先安装了 plutil,则可以安装它以使 postinst 和 postrm 不会失败。

    控制

    Name: com.test.package
    Pre-Depends: com.ericasadun.utilities
    

    postinst

    #!/bin/bash
    
    #add value to array
    plutil -key Hidden -arrayadd -value com.intelliborn.intelliscreenx /var/mobile/Library/LibHide/hidden.plist
    
    declare -a cydia
    cydia=($CYDIA)
    
    if [[ $1 == install ]]; then
        if [[ ${CYDIA+@} ]]; then
        eval "echo 'finish:restart' >&${cydia[0]}"
        fi
    fi
    
    exit 0
    

    【讨论】:

    • 这对我不起作用。我不认为 arrayadd 是一个有效的选项
    • 你必须确保你有更新的 plutil。抓住它ericasadun.com/ftp/EricaUtilities 否则你将不得不搜索它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多