0
  • Sparkle-1.21.0
  • 操作系统 X 10.11

generate_appcast不适用于.dmg文件:

从目录 /Users/quanta/Downloads/updates 生成 appcast 时出错 Error Domain=SUSparkleErrorDomain Code=1001 “在 /Users/quanta/Downloads/updates 中找不到可用的档案” UserInfo={NSLocalizedDescription=在 /Users/quanta/ 中找不到可用的档案下载/更新}

所以,我必须appcast.xml手动创建:

<?xml version="1.0" standalone="yes"?>
<rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0">
    <channel>
        <title>x</title>
        <item>
            <title>1.0.0.2891</title>
            <pubDate>Thu, 06 Dec 2018 17:25:26 +0800</pubDate>
            <sparkle:minimumSystemVersion>10.7</sparkle:minimumSystemVersion>
            <enclosure url="https://example.com/x.dmg" sparkle:version="1.0.0.2891" sparkle:shortVersionString="1.0.0.2891" length="86454539" type="application/octet-stream"/>
        </item>
    </channel>
</rss>

测试时出现此错误:

包的 DSA 签名验证失败。该更新包含一个安装程序包,并且所有安装程序包都必须有有效的 DSA 签名。更新将被拒绝。使用有效的 DSA 密钥对安装程序进行签名,或者改用 .app 包更新。

第一次运行sign_update,我选择“始终允许”,所以下次它不会要求输入密码:

$./bin/sign_update /path/to/x.dmg
sparkle:edSignature="x==" length="105562628"

但是通过 ssh 运行时仍然出现此错误:

$ ~/Downloads/Sparkle-1.21.0/bin/sign_update /path/to/x.dmg
ERROR! Unable to access required key in the Keychain -25308 (you can look it up at osstatus.com)

我知道我们可以openssl用来做同样的事情:https ://github.com/sparkle-project/Sparkle/blob/master/bin/old_dsa_scripts/sign_update

但是如何dsa_priv.pem从我的钥匙串中导出?

4

1 回答 1

0

原因是login.keychain通过ssh运行时被锁定。

我们必须在运行前解锁它sign_update。将以下命令放入脚本中:

#!/bin/sh

security unlock-keychain -p "$pa55w0rd" $HOME/Library/Keychains/login.keychain
于 2018-12-11T05:06:37.177 回答