【发布时间】:2014-03-06 18:59:29
【问题描述】:
我正在尝试在括号外壳应用程序中实现 Sparkle。我相信我已经正确设置了一切,但似乎失败了。
它将运行更新,找到更新,准备好它,然后当我点击“安装并重新启动”按钮时,它将无限期地停留在“正在安装更新...”屏幕上。
我认为可能是括号壳不想关闭它的最后一个孩子,所以我尝试实现 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,它开始像你描述的那样冻结。
-
你在开发沙盒应用吗?
-
我没有在沙盒应用上工作,我的控制台没有显示任何崩溃。我发现了一些非常有趣的东西,我已经更新了我的帖子。
-
我的应用 FWIW 出现了同样的行为。
标签: xcode delegates sparkle brackets-shell