0

由于 macOS 11.3 破坏了我过去 12 年来一直用来生成Sparkle应用程序广播的 Perl 脚本,因此我决定开始使用generate_appcastSparkle 提供的工具。在没有参数的情况下调用generate_appcast,我得到一些简短的文档,我将其解释为我应该提供两个参数:

  • a-f后跟我的 Sparkle 私钥文件的路径
  • 我的应用程序的几个最新版本的目录的路径,全部压缩

所以我创建了一个新目录并将我的应用程序的三个最新版本的 zip 存档复制到其中。这些是经过 Apple 公证的 .zip 档案,我将其上传到我的网站供用户下载。

然后我运行了这个命令:

Air2:~ jk$ generate_appcast -f /path/to/My_Sparkle_priv.pem /path/to/directory/of/zips

结果:

Warning: Private key not found in the Keychain (-25300). Please run the generate_keys tool
Error generating appcast from directory /path/to/My_Sparkle_priv.pem 
 Error Domain=NSCocoaErrorDomain Code=256 "The file “My_Sparkle_priv.pem” couldn’t be opened." UserInfo={NSUserStringVariant=(
    Folder
), NSURL=file:///path/to/My_Sparkle_priv.pem/, NSFilePath=/path/to/My_Sparkle_priv.pem, NSUnderlyingError=0x13a637e10 {Error Domain=NSPOSIXErrorDomain Code=20 "Not a directory"}}

显然它没有识别我提供的密钥文件,并且奇怪地暗示它需要一个目录而不是常规文件。在简短的文档中,有一个标记为 [DEPRECATED] 的示例省略了-f密钥文件的路径之前,所以我尝试了,但得到了相同的结果。我还尝试将通往拉链的路径放在首位,但结果更糟。

我认为我的密钥文件是一个非常标准的 .pem 文本文件,它以-----BEGIN DSA PRIVATE KEY-----行开头,后跟 1133 个 ASCII 字符等。

我在哪里错过了船?

4

1 回答 1

1

令人惊讶的是,这似乎是由于 Sparkle generate_appcast Swift 源代码中的一个明显的编程错误造成的。在尝试从命令行参数数组中删除索引为 N 和 N+1 的元素时,代码删除了元素 N,然后删除了元素 N+1,这当然会删除元素 N 和 N+2。在我修复了这个编程错误之后,问题就解决了。

在我做了一些令人头疼的事情并可能咨询了比我更聪明的人之后,我将在下周向 Sparkle 项目提交一个拉取请求或其他任何东西。

于 2021-02-13T18:56:14.133 回答