1

我希望 appcast pubDate xml 元素允许我指定我的应用程序不能考虑更新,除非当前日期是发布日期 (pubDate) 或更晚。

这是一个示例 appcast,其中包含 item 元素内的 pubDate 元素:

<item>
  <title>Version 2.0 (2 bugs fixed; 3 new features)</title>
  <sparkle:releaseNotesLink>http://you.com/app/2.0.html</sparkle:releaseNotesLink>
  <pubDate>Wed, 09 Jan 2006 19:20:11 +0000</pubDate>
  <enclosure url="http://you.com/app/Your Great App 2.0.zip" sparkle:version="2.0" length="1623481" type="application/octet-stream" sparkle:dsaSignature="BAFJW4B6B1K1JyW30nbkBwainOzrN6EQuAh" />
</item>

这是从 Sparkle 的网站复制的:https ://github.com/sparkle-project/Sparkle/blob/0ed83cf9f2eeb425d4fdd141c01a29d843970c20/Sample%20Appcast.xml

所以顺序是这样的:

  1. 我在星期一将我更新的应用程序--myapp v1.1--复制到我的更新网络服务器
  2. 在我的更新服务器上,我还将 pubDate 设置为星期三(采用正确的 RFC 822 格式)
  3. 周二,有人运行 myapp v1.0 并尝试使用 myapp v1.0 中捆绑的 sparkle appcast 将 myapp 更新为可用的任何内容
  4. 那时,sparkle 比较了版本并认为应该进行更新,但它仍然只是星期二,所以 sparkle 不会提供更新选项,直到他在星期三(或更晚)再次尝试
  5. 星期三到了,用户尝试再次更新 myapp v1.0,这一次它可以工作,因为版本是可更新的,日期是星期三。

这是 pubDate Sparkle 元素的目的吗?

除了版本号之外,Sparkle 是否使用 pubDate 来帮助确定是否应该进行更新?

阻止应用程序更新直到某个日期是我想要的,但我发现 pubDate 似乎并没有为我做这件事。

我在 Sparkle 文档中找不到对 pubDate 目的的参考:https ://github.com/sparkle-project/Sparkle/wiki

4

1 回答 1

1

如您所知,Sparkle 使用 RSS 在附件标签内列出应用程序更新(这就是他们所说的“appcasting” - 请参阅:http ://connectedflow.com/appcasting/ )

pubDate 元素不是 Sparkle 特有的——它只是 RSS 规范的一部分(参见http://www.w3schools.com/rss/rss_tag_pubdate.asp),并且可能/应该被通用 rss 阅读器用来展示项目/条目按时间顺序。

据我所知,Sparkle 本身只对 pubDate 做一件事 - 它正在订购更新候选人(https://github.com/sparkle-project/Sparkle/blob/master/SUAppcast.m#L218

现在,可以通过继承 SUUpdater 进一步自定义 Sparkle 选择符合条件的更新的方式:请参阅https://github.com/sparkle-project/Sparkle/wiki/bundles#wiki-subclassing-suupdater,尤其是bestValidUpdateInAppcast方法:https://github .com/sparkle-project/Sparkle/wiki/customization

在那里,您应该能够进一步处理项目并实现您想要的行为。

于 2014-01-28T11:22:28.000 回答