1

我正在为越狱的 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

如果502:staff我卸载该软件包并重新安装它,则会创建 plist,但它归.sysloglaunchctl unloadlaunchctl load

知道有什么问题吗?

4

1 回答 1

1

原来我的问题是子项目中的preinstpostinst脚本没有运行。我不知道这是否是 debian 软件包应该运行的方式,或者它只是 theos 处理子项目方式中的一个错误,但我能够通过简单地将这些命令移动到主项目的preinst和脚本来解决它。postinst

这并不理想,因为从逻辑上讲,它们属于子项目,但它确实有效。

于 2013-04-19T22:26:43.867 回答