问题标签 [sparkle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Sparkle.Framework 下载后未安装新更新。错误:提取文件时出错。请稍后再试
我正在使用 Sparkle 框架来更新我的应用程序。
它正在检查更新并下载它,但在安装时它给出了一个错误。
我无法理解为什么会发生此错误。
我已将 .app 文件压缩为 .zip 后上传到服务器。我不知道为什么它无法提取它。
请帮忙。我是个大麻烦。
015-09-08 11:43:30.075 更新[927:19428] Sparkle:===== 更新 ===== 2015-09-08 11:43:30.076 更新[927:19428] Sparkle:使用 ' 提取/usr/bin/ditto''-x''-k''-'<'/Users/Paxcel/Library/Caches/com.TechHeal.Update/Sparkle/Update 1.2/Update.zip''/Users/Paxcel/ Library/Caches/com.TechHeal.Update/Sparkle/Update 1.2' 2015-09-08 11:45:06.270 更新[927:19037] Sparkle:新版本的代码签名与旧版本不匹配:cdhash H" def198d02dbf94943fc22c626bbb4b36d2248e5a”。请确保新旧应用使用完全相同的证书进行签名。2015-09-08 11:45:06.305 更新[927:19037] Sparkle:主机信息:{ build = 1; 格式 =“与 Mach-O 瘦 (x86_64) 捆绑”; 标识符 = "com.TechHeal.Update"; 要求=“”;“签约时间”=“”;团队ID =“”;版本=“1.0”;} 2015-09-08 11:45:06.306 更新[927:19037] Sparkle:新信息:{ build = 2; 格式 =“与 Mach-O 瘦 (x86_64) 捆绑”; 标识符 = "com.TechHeal.Update"; 要求=“”;“签约时间”=“”;团队ID =“”;版本=“1.2”;} 2015-09-08 11:45:06.308 更新 [927:19037] Sparkle:更新存档未使用 DSA 密钥签名,并且应用程序使用与代码签名不匹配的新代码签名身份进行签名原始应用程序:Error Domain=NSOSStatusErrorDomain Code=-67050“操作无法完成。(OSStatus错误-67050。)” 用户信息=0x60000027e880 {SecCSArchitecture=x86_64}。至少一种签名验证方法必须是有效的。更新将被拒绝。
macos - Mac 10.11 上的 Qt:代码没有资源,但签名表明它们必须存在
我有一个带有 Sparkle 框架的 Qt 5.4 应用程序。从我们的服务器下载后,Mac OS X 10.11 上的 Gatekeeper 会显示“unidentified developer”错误。经过一些研究(codesign --strict 显示 sparkle 中缺少文件),我删除了 Sparkle 框架中损坏的符号链接。然后我重建了应用程序,使用 codesign 和 spctl 检查
codesign --verbose --deep --strict myapp.app
结果是:myapp.app:满足其指定要求
spctl --assess --type exec --verbose myapp.app 显示:接受
接下来我构建了 dmg 映像,从映像安装,应用程序运行没有问题。然后我将 dmg 上传到服务器,并从我们的服务器下载。MD5 校验和匹配。
但是,在我将应用程序拖放到 /Applications 文件夹并运行它后,操作系统显示应用程序已损坏,必须将其移至垃圾箱。相同的 codesign 命令仍返回“满足其指定要求”,但相同的 spctl 命令显示:
代码没有资源,但签名表明它们必须存在
只需从我们的服务器下载应用程序,spctl 输出就会发生变化。我不认为它与资源有任何关系(应用程序确实有资源),因为同一个构建脚本已经创建了几个没有这个错误的版本。该脚本确实修改了 qt 框架结构,但适用于 10.10。
我构建了一个新的 Mac OS 10.11,安装了 xcode 7.0.1、Qt 5.5,重新构建了应用程序(没有修改 App 包中 Qt 框架结构的脚本)。完全相同的结果:应用程序在上传前通过了 codesign 和 spctl,下载后失败并出现同样的错误。
从本质上讲,在 Sparkle 框架中删除了损坏的链接后,应用程序包从“身份不明的开发者”变为“损坏的图像”。
谁能告诉我哪里出错了?
objective-c - Sparkle 更新在 10.11(应用程序传输安全)中搞砸了,有什么解决方法吗?
只有在为 10.11 Base SDK 发布了我的应用程序构建的更新后,我才了解到该应用程序不能再使用非 HTTPS 协议发出 NSURLRequests,除非在应用程序的 Info.plist 中明确列入白名单,我无法事后更改。
现在最糟糕的是,该应用程序因此失去了检查更新和更新的能力。所以我不能为用户提供修复。
他们永远被最后一个版本卡住了:(他们只能手动下载更新的、固定的版本,但甚至没有办法告诉他们这样做。
是否有任何解决方法我仍然可以分发修复程序,也许在服务器端,或者至少告诉人们手动下载它?
谢谢。
python - 如何保持使用 python ctypes 运行的函数
我正在尝试创建一个使用 ctypes 调用 winsparkle C 库的最小 python 脚本。该代码仅在我逐行运行时才有效,win_sparkle_check_update_without_ui()
弹出一个窗口以按预期下载更新。但是正常运行脚本这个函数只是被调用并立即跳过,它不会保持打开状态,除非我添加了 hacky time.sleep 选项。
运行此函数并使其保持打开状态直到用户关闭弹出窗口的正确pythonic方法是什么?
macos - 用更新版本替换 Sparkle 是否安全
&tldr; 是什么阻止我们用新的 Sparkle.framework 替换旧的 Sparkle.framework?
Sparkle是 Mac OS X 应用程序中常用来管理更新的框架。最近,有人报告了中间人攻击的漏洞;而且,由于大量使用 Sparkle 的知名应用程序,世界各地的 IT 经理开始失眠。
据报道,一些受影响的应用程序,如 VLC,已经发布了修复程序。然而,由于 Sparkle 已经存在了这么久,可能还有许多其他应用程序不再积极开发,但仍然容易受到相同问题的影响。我们已经遇到过一种这样的应用程序。
由于 Sparkle.framework 是一个运行时框架,因此在应用程序包中用较新的 (1.13.1) 代码替换旧的(在许多情况下为 1.5 或 1.6)代码将允许应用程序在许多案例。到目前为止,我们的轻量级测试是令人鼓舞的二对二(这意味着,应用程序可以启动,并且会检查更新);但是,虽然对乐观主义者来说是鼓舞人心的,但这绝不是一个全面的答案。
那么,联系专业人士——用最新版本替换应用程序包中旧版本的 Sparkle.framework 有哪些缺点(或障碍)?这实际上是否可以在等待所有受影响的应用程序更新时减轻漏洞。
答案可能会有所不同,具体取决于当前使用的 Sparkle 版本,以及哪个版本支持哪些函数调用。这还取决于新版本的 Sparkle 中是否已弃用任何功能,这是我不知道的。
macos - Sparkle 无法更新沙盒应用程序
Sparkle 可以用来更新沙盒应用吗?更新最初似乎可以工作,提供适当的用户对话框以提示更新并进行复制。但是它挂在“正在安装更新...”的末尾。我在控制台日志中注意到以下内容。
其他帖子已经提到了这个问题,但是它们已经有 2 年的历史了,我还没有找到任何关于如何使这个工作的当前文档。
ruby - 从应用程序外部调用 Sparkle 更新程序
我正在编写一个 Ruby 程序来自动更新所有使用 Sparkle 框架的应用程序。构建所有此类应用程序的列表很容易。下一步是触发 Sparkle 更新程序。
另一种方法是从应用程序的 Info.plist 中检索捆绑版本和 SUFeedURL,然后下载并解析开发人员的 appcast XML 文件,并手动进行版本比较,如果需要,可能会提示用户打开和更新应用程序。鉴于已经有一个出色的开源框架可以做到这一点,这似乎是对时间和时钟周期的巨大浪费。
是否可以使用 Ruby 或 bash 从应用程序外部调用 Sparkle 的 checkForUpdates 方法(或者更好的是checkForUpdatesInBackground方法)?