我正在为越狱iOS编写一个应用程序,其中包括UI应用程序和启动守护程序。我将启动守护进程设置为UI应用程序项目的子项目。
一切都运行得很好,除了我无法卸载软件包然后在安装过程中重新加载启动守护程序,或者chown
启动守护程序plist文件到root:wheel
。
在mainproject/subproject/layout/DEBIAN/preinst
我有以下代码:
#!/bin/sh
chown root:wheel /Library/LaunchDaemons/com.plistname.plist
launchctl unload /Library/LaunchDaemons/com.plistname.plist 2>&1 > /dev/null
和mainproject/subproject/layout/DEBIAN/postinst
:
#!/bin/sh
chown root /Library/LaunchDaemons/com.plistname.plist
launchctl load /Library/LaunchDaemons/com.plistname.plist
如果我卸载软件包并重新安装它,则会创建plist,但它由502:staff
拥有,如果我手动运行{{1},我就看不到syslog
中看到的消息}和launchctl unload
。
知道可能出现什么问题吗?
答案 0 :(得分:1)
事实证明我的问题是子项目中的preinst
和postinst
脚本没有运行。我不知道这是否应该运行debian软件包,或者它只是theos处理子项目的方式中的一个错误,但我能够通过简单地将这些命令移动到preinst
和{来解决它{1}}主项目的脚本。
这是不理想的,因为从逻辑上讲,它们属于子项目,但它有效。