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)
{
}
}
非同步應該也是可以?
回覆刪除最後都會重開(Restart),重開後就是新版本了。