更新一个已经分发的被沙盒化的OSX应用程序,使用Sparkle技术

7
在一阵不加思考的热情中,我对我的应用进行了沙盒化和 Sparkle 更新。由于该应用程序仅具有对用户选择的文件(以及音乐目录)的读/写访问权限,因此我现在无法更新自己的二进制文件。哎呀。
与安迪·马图什克(Andy Matuschak)在过去一年左右进行了广泛的讨论(https://github.com/sparkle-project/Sparkle/pull/165),但是虽然提出的解决方案“几乎足够好”,但对已经分发了非沙盒应用程序的问题没有任何启示。
哦,而且似乎使用了 Sparkle 分发的“磁盘映像”方法可能是相关的。
我能想到的唯一解决方案是发布一个 Sparkle 更新,只需向用户显示一条消息,告诉他们手动下载。有没有更好的想法?
-Dave
1个回答

2
安迪·马图舍克(Andy Matuschak)似乎表明,Sparkle实际上可以为您优雅地处理“仅下载”功能。用他自己的话说,只需在中省略,并将2.0元素作为的子元素添加即可。
在此处阅读他的评论:https://github.com/sparkle-project/Sparkle/issues/227#issuecomment-13192723 就像他之前的费马一样,他遗漏了一个信息。但与定理不同的是,我们可以访问Sparkle源代码,特别是SUAppcastItem.m。通过代码,我找出了缺失的部分是标记。以下是一个示例应用程序广播:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"  xmlns:dc="http://purl.org/dc/elements/1.1/">
   <channel>
      <title>FooBar</title>
      <link>http://foobar.com/appcast.xml</link>
      <description>Most recent changes with links to updates.</description>
      <language>en</language>
        <item>
            <title>FooBar 2.0</title>
            <sparkle:releaseNotesLink>http://foobar.com/release-notes-special.html</sparkle:releaseNotesLink>
            <sparkle:minimumSystemVersion>10.9.0</sparkle:minimumSystemVersion>
            <pubDate>2014-04-14T18:40:44+02:00</pubDate>
            <sparkle:version>2013</sparkle:version>
            <sparkle:shortVersionString>2.0</sparkle:shortVersionString>
            <link>http://foobar.com/release-notes-special.html</link>
        </item>
   </channel>
</rss>

在接收应用更新推送的沙箱应用中,已经没有“安装更新”选项,而是替换为了“了解详情”的按钮,点击后会跳转至链接<link>。此处适合提供下载说明。
在您的下一个应用版本中,您可以使用不同的URL来进行应用更新,这样上述应用更新推送只适用于旧版本(假设您已修复问题,并现在使用非官方的XPC技巧与Sparkle一起使用)。

我们目前正在将沙盒支持合并到Sparkle中,请参见https://github.com/sparkle-project/Sparkle/issues/363获取更多信息。 - Jake Petroules

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接