2014-03-06 49 views
1

我试图在括号外壳应用程序中实现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,以便在没有最终窗口的情况下执行所有操作......但这并不是很理想。

+0

你可以检查你的控制台上Sparkle的任何崩溃吗?我的应用程序上闪烁着Sparkle,并且完全按照您所描述的方式冻结。 –

+0

你在使用沙盒应用程序吗? –

+0

我不是在沙盒应用上工作,我的控制台没有显示任何崩溃。我发现了一些非常有趣的东西,我更新了我的帖子。 – samanime

回答

0

我有同样的问题,像你有一些头挠划时刻我发现里面sparkle.framework - >资源 - >自动更新。当我看到内容时,它没有将Autoupdate作为可执行文件(内容 - > MacOS - > Autoupdate)。将其设置为可执行文件后,它将完全重新启动。