1

我在我的应用程序中使用 Sparkle 并通过运行 shell 脚本构建阶段对框架进行签名,该阶段运行良好,没有构建错误。问题是,通过 Sparkle 工作没有更新,更新者说:

提取档案时出错

错误的代码签名是否可能导致此错误?我很确定这不是 Sparkle 错误,RSS xml 文件是 100% 正确的。更新旧版本也可以。

这是一个非 MAS 应用程序,我使用我的开发人员 ID 应用程序证书对所有内容进行签名。我可以在启用 Gatekeeper 的情况下运行该应用程序(spctl -a -v 说:已接受),我可以手动解压缩并启动它,然后出现正确的消息,所以没有问题。

与旧版本的不同之处在于,这是我在新 Mac 上构建的第一个应用程序版本,我在 Xcode 中添加了我的开发者 ID 并获得了我需要的所有证书。我认为 Xcode 创建了新的,但这不应该是一个问题,我只是使用新的。我不知道这是否也会导致错误。有人知道更多吗?谢谢。

顺便说一句:当我选择“开发人员 ID”进行代码签名,然后将构建设置视图中的代码签名设置为我的开发 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 服务。

4

2 回答 2

0

这是您在 Mavericks 下构建的第一个版本吗?如果是,则可能是因为 Mavericks 需要对应用程序的所有嵌入式捆绑包进行签名。我遇到了这个问题并找到了解决方案:OS X app update issue with Sparkle under Mavericks and XCode 5

你的 shell 脚本是什么样的?你说你签署了 Sparkle 框架,你也签署了 XPC 服务吗?

于 2013-11-29T14:05:39.997 回答
0

在使用相同的“新”证书/代码签名设置进行新更新后,问题就消失了。我建议不要像我那样经常更改证书,也许当我创建新证书时出了点问题,Sparkle 不喜欢那样。

我不使用 XPC 服务,只使用你在上面看到的脚本。我没有更改脚本或应用程序转换 url/feed 等,所以我不知道到底是什么问题,但现在一切似乎都很好。

于 2014-02-10T11:19:40.080 回答