2014-03-06 83 views
1

我試圖在括號外殼應用程序中實現Sparkle。我相信我已經設置好了一切,但似乎失敗了。Sparkle凍結「正在安裝更新...」

它將運行更新,找到更新,準備就緒,然後當我點擊「安裝和重新啓動」按鈕時,它將無限期地位於「安裝更新...」屏幕上。

我以爲也許它是括號內的shell不想關閉它的最後一個孩子,所以我試圖實現updaterWillRelaunchApplication委託方法。我想這就是我稱之爲檢查我的更新,這樣的功能前右加它:

@implementation NSObject (SUUpdaterDelegateInformalProtocol) 
- (void)updaterWillRelaunchApplication:(SUUpdater *)updater { 
    NSLog(@"Closing properly"); 
    // code to close properly 
} 
@end 

但是,我從來沒有看到那個叫日誌消息,這我假設意味着我的代表沒有被稱爲。

所以,我基本上有兩個問題:

  • 我是否正確地實施該委託?我是一個完整的XCode新手,所以我只是知道它看起來像我在網上看到的例子,並編譯。我宣佈代表的地點在哪裏?
  • 想知道Sparkle如果不是因爲它的退出不正常,它可能會凍結?

謝謝。

更新

我發現一個非常奇怪和有趣的行爲。如果我在完成更新時沒有關注任何窗口(我的應用程序窗口或Sparkle窗口),它將工作得很好。如果我專注,會發生什麼情況是我的主窗口會關閉(就像它正在嘗試重新啓動),但Sparkle窗口保持打開狀態。然後我必須右鍵單擊並關閉應用程序。但是,如果在我點擊「安裝並重新啓動」按鈕之後,我翻轉到另一個應用程序(如Chrome),它會在後臺完好無損。如果Sparkle有專注,它似乎不會關閉。很奇怪。

作爲一種解決方法,我手動將「啓用自動更新」設置爲true,以便在沒有最終窗口的情況下執行所有操作......但這並不是很理想。

+0

你可以檢查你的控制檯上Sparkle的任何崩潰嗎?我的應用程序上閃爍着Sparkle,並且完全按照您所描述的方式凍結。 –

+0

你在使用沙盒應用程序嗎? –

+0

我不是在沙盒應用上工作,我的控制檯沒有顯示任何崩潰。我發現了一些非常有趣的東西,我更新了我的帖子。 – samanime

回答

0

我有同樣的問題,像你有一些頭撓劃時刻我發現裏面sparkle.framework - >資源 - >自動更新。當我看到內容時,它沒有將Autoupdate作爲可執行文件(內容 - > MacOS - > Autoupdate)。將其設置爲可執行文件後,它將完全重新啓動。