2010-01-15 141 views
3

在我的ClickOnce c#應用程序中,如何判斷用戶是否只更新了應用程序?我希望在用戶下載更新後顯示發行說明或更改日誌。如何判斷ClickOnce應用程序是否剛剛更新?

我知道如何以編程方式(拼寫?)檢測更新是否可用,並手動執行更新。我可以顯示更改日誌或發佈說明,但如果可能的話,我想要在更新後選擇。我的Googlefu讓我失望了。

回答

3

我不確定是否存在或不存在框架機制。

但是你可以自己手動處理。如果您或發佈嚮導正在爲每個版本更新您的版本號,則可以將應用程序最後一次在本地運行時的版本號(Registry/AppData/Whatever)存儲起來,然後將其與當前版本#進行比較。如果版本號不匹配,您可以設置本地「上次運行版本」,然後顯示發行說明。

您可以使用類似獲取版本的應用程序:

private string version 
{ 
    get 
    { 
     System.Reflection.Assembly _assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly(); 

     string ourVersion = string.Empty; 

     if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) 
     { 

      ourVersion = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString(); 
     } 
     else 
     { 
      if (_assemblyInfo != null) 
      { 
       ourVersion = _assemblyInfo.GetName().Version.ToString(); 
      } 
     } 

     return ourVersion; 
    } 
} 
+0

呀。我希望有一個框架的東西。 – Amy 2010-01-15 16:16:09

+4

快速查看ApplicationDeployment將我帶到http://msdn.microsoft.com/en-us/library/system.deployment.application.applicationdeployment.isfirstrun.aspx,這可能是您可以使用的。它說「只要用戶從一個版本升級到下一個版本,這個屬性的價值就會重置」,這看起來像你想知道的。 – Ruddy 2010-01-15 17:09:14

+0

Ruddy,你是一個美麗的人。謝謝! – Amy 2010-01-15 19:45:34

0

我知道它老了,但你可以用CheckForUpdate()方法:

using System.Deployment.Application; 

public bool IsUpdateAvailable() 
{ 
    if (!ApplicationDeployment.IsNetworkDeployed) return false; 

    return ApplicationDeployment.CurrentDeployment.CheckForUpdate();   
} 
相關問題