在一阵非思维的热情中,我沙盒,然后闪耀更新我的应用程序。由于应用程序只对用户选择的文件(和音乐目录)具有读/写访问权限,因此我现在无法更新自己的二进制文件。糟糕。
在过去一年左右的时间里,Andy Matuschak对此进行了广泛的争论(https://github.com/sparkle-project/Sparkle/pull/165)但是虽然提议的解决方案“已经足够好了”,但对于已经分发非解决方案的问题一无所知。 -sandboxed app。
哦,似乎我一直在使用闪光分布的'磁盘映像'方法。
我能想到的唯一解决方案是发布一个闪亮的更新,只是向用户提示消息,告诉他们手动下载。有没有人有更好的想法?
-Dave
答案 0 :(得分:1)
Andy Matuschak似乎表明Sparkle实际上只能处理&#39;仅下载&#39;优雅地为你。用他自己的话说,只需将<enclosure>
从<item>
中删除,然后添加<sparkle:version>2.0</sparkle:version>
元素作为<item>
的子元素。
在此处阅读他的评论:https://github.com/sparkle-project/Sparkle/issues/227#issuecomment-13192723
就像他之前的费马一样,他遗漏了一条信息。但与定理不同,我们可以访问Sparkle源代码,特别是SUAppcastItem.m
。感谢代码,我发现缺少的部分是<link>
标记。这是一个示例appcast:
<?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>
在接收该appcast但无法更新的沙盒应用中,“安装更新”&#39;已经消失了,取而代之的是“了解更多”。将用户带到<link>
中的网址的按钮。这是一个有下载说明的好地方。
在您的应用的下一个版本中,您可以为appcast使用不同的URL,以便上面的appcast仅适用于旧版本(假设你修复了一些东西,现在使用Sparkle的非官方XPC技巧)。