5

我正在尝试从设备文件系统上的 plist 安装 iOS 应用程序。

NSString *launchNewPlistURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=file://%@",[self saveFilePath]];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:launchNewPlistURL]];

我被提示“(null)想要安装{myappname}”。通常 (null) 是 plist 来自的域名,但在这种情况下它为 null,因为它是本地文件。

无论如何要在 plist 中指定标题或在 url 中传递假域名?

谢谢,丹

4

2 回答 2

3

您可以使用MongooseDaemon项目来创建 HTTP 本地服务器。

使用类似于:http: //192.168.xxx.xxx/yourplist.plist的域来安装它。

无论如何,我认为您不能将它与大型 IPA 一起使用。我尝试过使用大于 15MB 的 IPA,但启动安装非常非常慢。

于 2012-11-16T07:01:16.277 回答
2

我也遇到了类似的情况,本来也是走猫鼬的路线,今天偶然发现了CocoaHttpServer

使用 Mongoose,我只获得了大约 20% 的成功率来提供本地 plist/IPA 文件。有时localhost would like to install对话框从未出现,有时安装开始并在中途失败,有时它确实有效。更糟糕的是,一旦某个应用程序出现故障,我必须完全卸载并重新安装它,因此所有数据都丢失了。我永远无法成功“修复”失败的安装。

到目前为止,只需大约 10-15 分钟的测试,CocoaHttpServer 还没有失败。我知道这是一个非常小的样本量,但我的 Mongoose 成功率约为 10%。

self.httpServer = [[HTTPServer alloc] init];
[self.httpServer setType:@"_http._tcp."];
[self.httpServer setPort:8080];
//This is just a path where I save my IPA and Plist file locally.  
//In my case it's /{NSDocumentDirectory}/install/
[self.httpServer setDocumentRoot:[self pathForLocalInstallFiles]];

然后是磁盘上 plist 的 URL:

NSURL *plistUrl = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=http://localhost:8080/appname.plist"];
[[UIApplication sharedApplication] openURL:plistUrl];

在 plist 中,您的 URL 指向本地 IPA 文件,我使用file://or 或http://localhost/.

于 2013-01-23T16:07:16.913 回答