Xcode 5 + Sparkle + 代码签名
Posted
技术标签:
【中文标题】Xcode 5 + Sparkle + 代码签名【英文标题】:Xcode 5 + Sparkle + Code Signing 【发布时间】:2013-11-13 18:03:39 【问题描述】:我在我的应用程序中使用 Sparkle,并通过运行 shell 脚本构建阶段对框架进行签名,它工作正常,没有构建错误。问题是,通过 Sparkle 工作没有更新,更新者说:
解压存档时出错
错误的代码签名是否可能导致此错误?我很确定这不是 Sparkle 错误,RSS xml 文件是 100% 正确的。更新旧版本也可以。
这是一个非 MAS 应用程序,我使用我的 Developer ID 应用程序证书对所有内容进行签名。我可以在启用 Gatekeeper 的情况下运行该应用程序(spctl -a -v 说:已接受),我可以手动解压缩并启动它,然后出现正确的消息,所以没有问题。
与旧版本的不同之处在于,这是我在新 Mac 上构建的第一个应用程序版本,我在 Xcode 中添加了我的开发者 ID,并获得了我需要的所有证书。我认为 Xcode 创建了新的,但这不应该是一个问题,我只是使用新的。我不知道这是否也会导致错误。有人知道更多吗?谢谢。
顺便说一句:当我选择“开发人员 ID”进行代码签名然后设置代码签名时 在我的 Dev ID 的构建设置视图中,常规视图中的单选按钮也会跳回“无”。
编辑:脚本
LOCATION="$BUILT_PRODUCTS_DIR"/"$FRAMEWORKS_FOLDER_PATH"
IDENTITY="Developer ID Application: Name"
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/Sparkle.framework/Versions/A"
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/ShortcutRecorder.framework/Versions/A"
所以没有 XPC 服务的线路,我需要它吗?我想我的应用中没有使用 xpc 服务。
【问题讨论】:
【参考方案1】:这是您在 Mavericks 下构建的第一个版本吗? 如果是,则可能是因为 Mavericks 要求对应用程序的所有嵌入式捆绑包进行签名。 我遇到了这个问题并找到了解决方案:OS X app update issue with Sparkle under Mavericks and XCode 5
你的 shell 脚本是什么样的?你说你签署了 Sparkle 框架,你也签署了 XPC 服务吗?
【讨论】:
添加了脚本。我需要 xpc 服务吗?【参考方案2】:使用相同的“新”证书/代码签名设置进行新更新后,问题就消失了。我建议不要像我那样经常更改证书,也许当我创建新证书时出了点问题,Sparkle 不喜欢那样。
我不使用 XPC 服务,只使用您在上面看到的脚本。我没有更改脚本或应用程序转换 url/feed 等,所以我不知道到底是什么问题,但现在一切似乎都很好。
【讨论】:
以上是关于Xcode 5 + Sparkle + 代码签名的主要内容,如果未能解决你的问题,请参考以下文章