我正在为iPhone开发一个带Xcode的应用程序(越狱)。现在我想以编程方式安装.deb文件。我怎样才能做到这一点?我可以执行命令来安装它,但是如何?如果我通过Xcode在我的越狱iPhone上安装我的应用程序就足够了吗? (.ipa)还是我需要创建一个.deb?如果是,怎么样?
非常感谢!
度过愉快的一天。
编辑:我制作了一款应用。在这个应用程序中,我有一个文件浏览器(仅用于文档目录)。在此目录中有.deb文件。现在,如果用户点击一个,我想以编程方式安装这些.deb文件。我该怎么做?
答案 0 :(得分:0)
AFAIK dpkg -i * .deb是安装.deb的命令。但是你无法在.deb中安装.deb,因为包管理器已被锁定,因此你需要一个脚本或其他东西。
答案 1 :(得分:0)
如果您希望您的应用程序作为软件包安装程序运行,那么是的,我会使用
dpkg -i filename.deb
您可以使用system()调用或exec()调用以编程方式执行此命令,并使用"dpkg -i filename.deb"
作为命令。您可能希望完全限定dpkg
的路径(例如/ usr / bin / dpkg ...或者它是什么......我现在不在我的手机上)如果您使用system()
特别是
您可能发现需要 root 权限才能执行此操作。 See this on how to give your app root privileges
另一个选项,即不要求您的应用以 root 运行或使用exec()
或system()
来电,是使用I describe in this answer技术,是关于如何以编程方式重启iPhone。正如我使用脚本调用reboot
命令一样,您可以编写一个脚本来执行dpkg -i filename.deb
。您只需要提供一种机制来将文件名传递给您的脚本,我假设它会动态更改(除非您的程序使用了一个总是指向要安装的当前.deb文件的临时链接。)
答案 2 :(得分:0)
许多选择。
从Icy Github学习源代码。 https://github.com/ripdev/Icy
简单的方法,只需使用系统函数来调用dpkg命令。
NSString *appsyncDebPath=@"/var/root/appsync.deb";
NSString *cmdString=[NSString stringWithFormat:@"/usr/bin/dpkg -i %@ >/tmp/dpkg.log;",appsyncDebPath];
const char *cmdChar=[cmdString UTF8String];
system(cmdChar);
您可以显示/tmp/dpkg.log
的结果答案 3 :(得分:-1)
AFAIK越狱iPhone让你可以在没有证书的情况下安装ipa ......所以这就够了......