2013-03-02 48 views
7

在一陣非思考的熱情中,我沙盒,然後閃耀更新我的應用程序。由於該應用程序只具有對用戶選定文件(和音樂目錄)的讀/寫訪問權限,因此我現在無法更新自己的二進制文件。哎呀。使用閃爍更新(可悲的已分發)沙盒OSX應用程序

這與Andy Matuschak在過去一年左右(https://github.com/sparkle-project/Sparkle/pull/165)已經廣泛辯論,但雖然提出的解決方案「幾乎足夠好」,但已經沒有解決已經分發非沙盒應用程序的問題。

哦,看來它可能是相關的,我一直在使用閃存分佈的'磁盤映像'方法。

我所能想到的唯一解決方案是發佈一個閃光燈更新,只是向用戶顯示一條消息,告訴他們手動下載。有沒有人有更好的想法?

-Dave

回答

1

安迪Matuschak似乎表明,旌宇可以實際處理「僅下載」優雅地爲您服務。用他自己的話說,只需將<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,不能以其他方式更新,「安裝更新」沙盒應用程序已經一去不復返了,取而代之的是一個「瞭解更多」按鈕,將帶來的用戶轉到該<link>中的URL。這是有下載說明的好地方。

在您的應用的下一個版本中,您可以使用不同的網址作爲appcast,以便上述appcast僅適用於舊版本(假設您修改了某些內容並現在使用Sparkle的非官方XPC技巧) 。

+0

我們目前正在將沙箱支持合併到Sparkle中,請參閱https://github.com/sparkle-project/Sparkle/issues/363瞭解更多信息。 – 2014-07-05 08:30:18