我使用 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 在更新过程中崩溃并出现以下错误:
Terminating app due to uncaught exception 'NSDestinationInvalidException', reason: '* +[SUPlainInstaller performSelector:onThread:withObject:waitUntilDone:modes:]: target thread exited while waiting for the perform' terminating with uncaught exception of type NSException
有什么想法可以从哪里来吗? 是签名问题吗?编译问题?
最佳答案
感谢this post,我终于找到了解决方案.
问题源于 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"
关于xcode - Mavericks 和 XCode 5 下 Sparkle 的 OS X 应用程序更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272170/