abcc
(abcc)
1
在本站搜过几个帖子,都是推荐如下方式:
#!/bin/sh
declare -a cydia
cydia=($CYDIA)
if [[ ${CYDIA+@} ]]; then
eval "echo 'finish:restart' >&${cydia[0]}"
fi
而我的目的是想实现:dpkg -i方式安装,能自动uicache和respring,cydia源方式安装,先uicache,再提示重启springboard,现在我是这样写的:
#!/bin/sh
declare -a cydia
cydia=($CYDIA)
if [[ ${CYDIA+@} ]]; then
uicache
eval "echo 'finish:restart' >&${cydia[0]}"
else
sleep 2
killall -9 SpringBoard
uicache
fi
可是dpkg -i直接提示
/var/lib/dpkg/info/com.your.deb.postinst: line 5: syntax error near ;' /var/lib/dpkg/info/com.your.deb.postinst: line 5:
if [[ ]]; then’
请问大佬们,我该怎么处理呢,谢谢!
o28c14
(o28c14)
2
我对deb postinst 不是非常熟悉,但是根据你的 “dpkg -I” 提示看起来
从上面数到第5行, 看起来就是错误的地方,那么建议你改改 ${CYDIA+@}
abcc
(abcc)
3
感谢回复。我参考过iphonedev上面,改成这样:
#!/bin/sh
declare -a cydia
cydia=($CYDIA)
if [[ -z $CYDIA ]]; then
sleep 2
killall -9 SpringBoard
uicache
else
uicache
eval "echo 'finish:restart' >&${cydia[0]}"
fi
然而在Cydia上安装依然走的killall -9 SpringBoard那个分支。
你可以找一个正常工作的插件参考它postinst是怎么写的
abcc
(abcc)
5
谢谢你的回复,我也这样操作过,我本机有一个libactivator是tweak和app混合的。我看了看:
libactivator.postinst长这样:
#!/bin/sh
mkdir -p /var/mobile/Library/Caches
chmod 777 /var/mobile/Library/Caches
chown mobile /var/mobile/Library/Caches
touch /var/mobile/Library/Caches/libactivator.plist
chmod 666 /var/mobile/Library/Caches/libactivator.plist
chown mobile /var/mobile/Library/Caches/libactivator.plist
rm -f /Library/MobileSubstrate/DynamicLibraries/Activator.disabled
( launchctl stop com.apple.mobilegestalt.xpc 2> /dev/null && launchctl start com.apple.mobilegestalt.xpc ) || true
( launchctl stop com.apple.wcd 2> /dev/null && launchctl start com.apple.wcd 2> /dev/null ) || true
exec activator postinst
可以看到,它最后是走自己的可执行文件的,也就是说,如何区分是cydia安装还是dpkg安装的部分,还是没有暴露出来。
不过我玩的tweak不多,还有啥别的软件也是app和tweak混合的,不太了解,就没去继续深挖了。