generate_appcast
不适用于.dmg
文件:
从目录生成应用广播时出错 / Users / quanta / Downloads / updates错误域= SUSparkleErrorDomain 代码= 1001“在以下位置找不到可用的档案 / Users / quanta / Downloads / updates“ UserInfo = {NSLocalizedDescription = No 在/ Users / quanta / Downloads / updates}中找到可用的归档文件
因此,我必须手动创建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
?
答案 0 :(得分:0)
原因是通过SSH运行时login.keychain
被锁定。
我们必须在运行sign_update
之前将其解锁。将以下命令放入脚本中:
#!/bin/sh
security unlock-keychain -p "$pa55w0rd" $HOME/Library/Keychains/login.keychain