2016年5月20日 星期五

ClickOnce 自動更新(免除手動設定版本號)

ClickOnce 要自動更新時,
如果沒設定最小必要版本,使用者就會跳出,是否要更新的選項。
如果選擇"跳過",就永遠不更新這版本了。。。。
而每次都要設訂最小必要版本,很麻煩。

所以透過程式直接設定每次開啟時,無條件自動更新到最新版。否則不能使用。
要使用"同步"的更新,因為使用"非同步"的更新,不會馬上變新的。要等下一次。







1.將更新部分全部取消


























2.透過程式在開啟Form 之前 Program.cs裡面實作自動更新

 if (檢查ClickOnce版本是否最新())
{ 
     Application.Run(new form1());
}
else
{
    強制同步更新版本();




/// <summary>
/// True 是最新,False 不是最新
/// </summary>
/// <returns></returns>
public static bool 檢查ClickOnce版本是否最新()
{
   try
    {
       //先確認是不是 ClickOnce的程式,避免程式出錯
       if (!(ApplicationDeployment.IsNetworkDeployed))
       {
         return true;
       }

       if (ApplicationDeployment.CurrentDeployment.CheckForUpdate())//比對伺服器上的版本
       {
         return false;
       }
       else
       {
         return true;
       }
   }
   catch (Exception ex)     {     }
   return false;
}






public static void 強制同步更新版本()
{
    try
    {
        //先確認是不是 ClickOnce的程式,避免程式出錯
        if (!(ApplicationDeployment.IsNetworkDeployed))
        {
            return;
        }
        //程式執行過程中,有版本更新 ,自動更新。
        //取得目前使用者的版本資訊
        System.Deployment.Application.ApplicationDeployment obj = ApplicationDeployment.CurrentDeployment;
        
        if (ApplicationDeployment.CurrentDeployment.CheckForUpdate())//比對伺服器上的版本
        {
            //同步更新
            obj.Update();
            Application.Restart(); 
        }
        else
        {
            return;
        }
    }
    catch (Exception ex)
    {
       
    }
}

1 則留言:

  1. 非同步應該也是可以?
    最後都會重開(Restart),重開後就是新版本了。

    回覆刪除