我试图在括号外壳应用程序中实现Sparkle。我相信我已经设置好了一切,但似乎失败了。Sparkle冻结“正在安装更新...”
它将运行更新,找到更新,准备就绪,然后当我点击“安装和重新启动”按钮时,它将无限期地位于“安装更新...”屏幕上。
我以为也许它是括号内的shell不想关闭它的最后一个孩子,所以我试图实现updaterWillRelaunchApplication
委托方法。我想这就是我称之为检查我的更新,这样的功能前右加它:
@implementation NSObject (SUUpdaterDelegateInformalProtocol)
- (void)updaterWillRelaunchApplication:(SUUpdater *)updater {
NSLog(@"Closing properly");
// code to close properly
}
@end
但是,我从来没有看到那个叫日志消息,这我假设意味着我的代表没有被称为。
所以,我基本上有两个问题:
- 我是否正确地实施该委托?我是一个完整的XCode新手,所以我只是知道它看起来像我在网上看到的例子,并编译。我宣布代表的地点在哪里?
- 想知道Sparkle如果不是因为它的退出不正常,它可能会冻结?
谢谢。
更新
我发现一个非常奇怪和有趣的行为。如果我在完成更新时没有关注任何窗口(我的应用程序窗口或Sparkle窗口),它将工作得很好。如果我专注,会发生什么情况是我的主窗口会关闭(就像它正在尝试重新启动),但Sparkle窗口保持打开状态。然后我必须右键单击并关闭应用程序。但是,如果在我点击“安装并重新启动”按钮之后,我翻转到另一个应用程序(如Chrome),它会在后台完好无损。如果Sparkle有专注,它似乎不会关闭。很奇怪。
作为一种解决方法,我手动将“启用自动更新”设置为true,以便在没有最终窗口的情况下执行所有操作......但这并不是很理想。
你可以检查你的控制台上Sparkle的任何崩溃吗?我的应用程序上闪烁着Sparkle,并且完全按照您所描述的方式冻结。 –
你在使用沙盒应用程序吗? –
我不是在沙盒应用上工作,我的控制台没有显示任何崩溃。我发现了一些非常有趣的东西,我更新了我的帖子。 – samanime