2011-07-19 72 views
1

我將我的ClickOnce應用程序設置爲不檢查更新(項目屬性 - >發佈 - >更新... - >「應用程序應檢查更新」因爲我以編程方式搜索它們,並且讓用戶有可能隨時安裝它們。ClickOnce檢查更新,即使它不應該(在特定情況下)

現在在以下情形:

  1. 更新使用的ClickOnce API
  2. 應用程序不更新
  3. 發現該應用程序啓動的應用程序,然後關閉
  4. 下次啓動應用程序時,ClickOnce窗口將提示用戶安裝或跳過更新。

這怎麼可以避免?

有趣的是,如果用戶跳過安裝,下次應用程序將啓動,用戶不會再被提示,因此應該有一些東西(在清單中?)告訴ClickOnce停止提示。

+0

當你說你編程方式檢查,您使用的是API CheckForDetailedUpdate? – Nikki9696

+0

我使用CheckForUpdateAsync –

回答

1

我以前見過這樣的東西。我認爲發生的事情是,當應用程序啓動時,ClickOnce不檢查更新,這是您設置的。當你運行應用程序時,更新檢查以編程方式完成,並且找到更新並且可能設置了標誌。然後應用程序關閉而不更新,但標誌仍然被設置。下一次啓動應用程序ClickOnce仍然不檢查更新,但因爲有一個標誌設置有更新可用,它會提示用戶查看他們是否想要獲取更新。我猜這是設計。

關於跳過更新的第二點,在有另一個更新之前不會再提示您。我相信這是有計劃的,如果你想回去做更新,你需要去應用程序的ClickOnce安裝頁面。

理想情況下,您希望能夠執行的操作與使用Application Deployment API以編程方式跳過使用ClickOnce對話框時發生的相同。我已經快速瀏覽了可用的公共方法,但我看不到任何有關跳過的內容,但也許您可以找到某些內容。

編輯

只是再看看API。你是否調用CheckForUpdate()或CheckForDetailedUpdate()而不使用布爾參數?如果是這樣,你所得到的提示的原因是因爲我說的是更新檢查被存儲:

如果的checkForUpdate發現有可用的更新,並且用戶 選擇不安裝它,ClickOnce的會提示用戶在下次運行應用程序時,可以使用更新 。沒有 的方法來禁用此提示。 (如果應用程序是必需的 更新的ClickOnce將安裝它,而不提示。)

相反,你想打電話給你使用的是有假的布爾值的方法,布爾標誌決定一個對話框,應顯示給用戶。

persistUpdateCheckResult類型:System.Boolean 如果爲false,更新將被默默地應用並不會顯示對話框。

+0

好的,謝謝你的信息。第二點對我來說不是問題,我只是想避免第一種情況下的任何提示 –

+0

@Ganswer在第一個示例中,當找到更新時,它會開始下載更新,但在更新完成之前關閉應用程序還是隻是發現有更新可用?更新也是強制性的還是不強制? – Bronumski

+0

它只是使用CheckForUpdateAsync檢查更新並找到它,但它不會下載它。更新不是必需的 –

0

我看到ApplicationDeployment.CheckForUpdate()方法has an overloadpersistUpdateCheckResult參數。

但是我使用的是CheckForUpdateAsync,它沒有任何這樣的過載。這似乎意味着在我遇到這個問題時結果的持續性。

我想解決的辦法是我寫我自己的異步調用...

相關問題