4

我使用 Sparkle 框架来处理我的应用程序更新。直到最近,当我升级到 OS X 10.9 Mavericks 和 XCode 5.0.2 时,一切都运行良好。

当我在 OS X 10.8.4 和 XCode 4.6.3 下编译我的应用程序时,它可以毫无问题地更新。但是,当我在 Mavericks 和 XCode 5.0.2 下使用相同的 XCode 项目和相同的代码签名编译完全相同的代码时,生成的包无法更新,Sparkle 在更新过程中崩溃并出现以下错误:

由于未捕获的异常“NSDestinationInvalidException”而终止应用程序,原因:“ * + [SUPlainInstaller performSelector:onThread:withObject:waitUntilDone:modes:]: 目标线程在等待执行时退出”以 NSException 类型的未捕获异常终止

这可以从哪里来的任何想法?是签名问题吗?编译问题?

4

1 回答 1

10

多亏了这篇文章,我终于找到了解决方案。

问题出在 Mavericks 改变了应用程序的签名方式这一事实。嵌入应用程序的每个框架现在也应该被签名。

为此,我刚刚添加了一个带有这些行的“运行脚本”构建阶段:

LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"
IDENTITY="Developer ID"
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/Sparkle.framework"
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/../XPCServices/com.andymatuschak.Sparkle.SandboxService.xpc"
于 2013-11-29T13:58:56.413 回答