2012-03-13 81 views
2

嗯,它是一個已知的事實,當我們雙擊clickonce安裝的應用程序時,會彈出一個「clickonce屏幕」,顯示「驗證系統要求」。然後,如果服務器中有更新的版本,clickonce會更新本地安裝的版本,並啓動應用程序。有沒有什麼辦法可以定製整個過程。這並不意味着我想對安裝/升級部分進行一些操作,我只是想改變這一切的GUI。 有些東西就像一個屏幕上寫着「正在啓動應用程序....」以及一個不確定的進度條會很好。這個屏幕應該代替所有的clickonce彈出窗口,允許clickonce在後臺執行實際的事情。 種類閃屏是我的意思,但它覆蓋clickonce屏幕的GUI ... 任何建議???定製clickonce下載屏幕

回答

0

有可能通過使用ApplicationDeployment類以編程方式更新應用程序。但在這種情況下,您應該實施更新邏輯,根據問題這可能很簡單或複雜。

如果您正在以編程方式撬動和下載更新,則可以在「發佈」窗口中取消選中更新選項,即應用程序將不會由ClickOnce更新並執行您編寫的所有更新邏輯。在代碼中,您可以添加啓動畫面並同步更新或添加一些「動態」,並讓用戶使用CheckForDetailedUpdate方法提供的數據知道更新的進度。

小樣本:

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     bool isUpdated = tryUpdateApplication(); 

     if (isUpdated) 
     { 
      Application.Restart(); 
     } 
     else 
     { 
      Application.Run(new MainForm()); 
     } 
    } 

    static bool tryUpdateApplication() 
    { 
     bool result = false; 

     try 
     { 
      UpdateCheckInfo info = ApplicationDeployment.CurrentDeployment.CheckForDetailedUpdate(); 

      if (info.UpdateAvailable) 
      { 
       //Show what you want to show 
       ApplicationDeployment.CurrentDeployment.Update(); 
       //Hide what you showed 
       result = true; 
      } 
     } 
     catch (Exception ex) //better to catch the specific exceptions 
     { 
      //some exception handling logic 
     } 

     return result; 
    }