Xcode 火花冻结在“上”;“正在安装更新…”;
我正在尝试在一个括号shell应用程序中实现Sparkle。我相信我把一切都安排妥当了,但似乎失败了 它将运行更新,找到更新,准备好,然后当我点击“安装并重新启动”按钮时,它将无限期地出现在“安装更新…”屏幕上 我认为可能是shell不想关闭它的最后一个孩子,所以我尝试实现Xcode 火花冻结在“上”;“正在安装更新…”;,xcode,delegates,sparkle,brackets-shell,Xcode,Delegates,Sparkle,Brackets Shell,我正在尝试在一个括号shell应用程序中实现Sparkle。我相信我把一切都安排妥当了,但似乎失败了 它将运行更新,找到更新,准备好,然后当我点击“安装并重新启动”按钮时,它将无限期地出现在“安装更新…”屏幕上 我认为可能是shell不想关闭它的最后一个孩子,所以我尝试实现updaterWillRelaunchApplicationdelegate方法。我尝试将其添加到我调用以检查更新的函数之前,如下所示: @implementation NSObject (SUUpdaterDelegateI
updaterWillRelaunchApplication
delegate方法。我尝试将其添加到我调用以检查更新的函数之前,如下所示:
@implementation NSObject (SUUpdaterDelegateInformalProtocol)
- (void)updaterWillRelaunchApplication:(SUUpdater *)updater {
NSLog(@"Closing properly");
// code to close properly
}
@end
但是,我从未看到调用的日志消息,我假设这意味着没有调用我的委托
所以,我基本上有两个问题:
- 我是否正确地执行了委托?我是一个完全的XCode新手,所以我只知道它看起来像我在网上看到的示例,并且它是编译的。我在哪里声明代理重要吗
- 你知道为什么Sparkle会被冻结,如果不是因为它的退出不正确的话
作为一种解决方法,我手动将“启用自动更新”设置为true,这样它就可以在没有最后一个窗口的情况下执行所有操作,而最后一个窗口可以工作。。。但这并不是很理想。我和你有一个相同的问题。经过一段令人挠头的时间后,我发现在sparkle.framework-->资源-->自动更新中。当我看到内容时,它没有将自动更新作为可执行文件(内容-->MacOS-->自动更新)。在使其成为可执行文件后,它会完美地重新启动。您是否通过应用商店分发应用程序?有同样的问题-通过HockeyApp分发应用程序 事实证明,我在我的功能中打开了应用程序沙盒,这导致了所描述的行为 Sparkle使用NSTask launchedTaskWithLaunchPath:arguments:将旧应用替换为新应用。如果沙箱授权和未通过Apple app Store分发应用程序,由于缺少访问权限,NSTask永远不会完成 其他信息:
您能检查一下您的控制台上是否有任何Sparkle崩溃的情况吗?我的应用程序上有Sparkle,它开始冻结,正如你所描述的。你正在使用沙盒应用程序吗?我没有使用沙盒应用程序,我的控制台也没有显示任何崩溃。我发现了一些非常有趣的东西,我更新了我的帖子。我在我的应用程序FWIW中看到了同样的行为。