2010-01-15 3 views
3

Dans mon application ClickOnce C#, comment puis-je savoir si l'utilisateur vient de mettre à jour l'application? Je voudrais offrir d'afficher les notes de version ou le journal des modifications après que l'utilisateur a téléchargé la mise à jour.Comment savoir si une application ClickOnce vient juste d'être mise à jour?

Je sais comment je peux (orthographe?) Par programme détecter si une mise à jour est disponible, et effectuer manuellement la mise à jour. Je pourrais montrer le changelog ou les notes de publication, mais je voudrais l'option pour le faire après la mise à jour, si possible. Mon Googlefu m'a échoué.

Répondre

3

Je ne sais pas s'il existe ou non un mécanisme de cadre pour cela.

Mais vous pourriez être en mesure de gérer vous-même manuellement. Si vous ou l'assistant de publication metz à jour le numéro de version de chaque version, vous pouvez stocker le numéro de version de la dernière application exécutée localement sur l'ordinateur (Registry/AppData/Whatever), puis le comparer à votre version actuelle. Si les numéros de version ne correspondent pas, vous pouvez définir la 'dernière version' locale, puis afficher les notes de version.

Vous pouvez chercher la version pour l'application en utilisant quelque chose comme:

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

Ouais. J'espérais qu'il y avait un truc du framework. – Amy

+4

Un rapide coup d'oeil sur ApplicationDeployment m'amène à http://msdn.microsoft.com/en-us/library/system.deployment.application.applicationdeployment.isfirstrun.aspx qui peut être quelque chose que vous pouvez utiliser. Il dit "La valeur de cette propriété est réinitialisée chaque fois que l'utilisateur met à niveau d'une version à l'autre", ce qui semble être ce que vous voulez savoir. – Ruddy

+0

Ruddy, vous êtes une belle personne. Je vous remercie! – Amy

0

Je sais son vieux, mais vous pouvez utiliser la méthode CheckForUpdate():

using System.Deployment.Application; 

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

    return ApplicationDeployment.CurrentDeployment.CheckForUpdate();   
}