2013-04-03 30 views
0

我正在通過Cydia安裝一個包,會寫com.intelliborn.intelliscreenx 這樣:慶典增添陣列的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> 
    </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腳本的樣子:

的postinst

#!/bin/bash 

declare -a cydia 
cydia=($CYDIA) 

if [[ $1 == install ]]; then 
    if [[ ${[email protected]} ]]; 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 [[ ${[email protected]} ]]; then 
     eval "echo 'finish:restart' >&${cydia[0]}" 
    fi 
fi 

exit 0 

回答

1

您可以使用plutil for iPhone,因爲它適用於plists文件。

在您的cydia軟件包的控制文件中,將以下內容添加到您的pre-depends中,如下面的示例,以便如果plutil在安裝之前可以爲postinst安裝,並且不會失敗。

控制

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 [[ ${[email protected]} ]]; then 
    eval "echo 'finish:restart' >&${cydia[0]}" 
    fi 
fi 

exit 0 
+1

這並沒有爲我工作。我沒有看到arrayadd作爲一個有效的選項 –

+0

你必須確保你有更新plutil。抓住它http://ericasadun.com/ftp/EricaUtilities/,否則你將不得不搜索它。 – Omar