2010-09-17 5 views
0
HttpWebRequest web; 
     try 
     { 
      web = (HttpWebRequest)HttpWebRequest.Create("website.name"); 

      WebResponse Response = web.GetResponse(); 
      Stream WebStream = Response.GetResponseStream(); 
      StreamReader Reader = new StreamReader(WebStream); 
      string data = Reader.ReadToEnd(); 

      Reader.Close(); 
      WebStream.Close(); 
      Response.Close(); 

      string[] ver = Regex.Split(data, "version="); 

      if (int.Parse(ver[1]) == int.Parse(appVersion)) 
      { 
       tss1.Text = "Status : You currently have the latest version";    
      } 
      else 
      { 
       tss1.Text ="Status : A new version of app is available."; 
       System.Diagnostics.Process.Start("website.name"); 
      } 
     } 
     catch (Exception ex) 
     { 
      tss1.Text = "Status : Update check failed."; 
      Debug.Write(ex.ToString()); 
     } 

J'essaie d'utiliser le code ci-dessus pour se connecter à la page Web et tirer vers le bas le dernier numéro de version pour l'application, ce qui ne pose pas de problème. Mon problème vient en essayant de comparer le nombre trouvé sur la page Web au nombre fourni par appVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();C# Entier analyse/comparaison

+3

Pouvez-vous préciser exactement ce résultat que vous obtenez ou quel est le problème? – CodingGorilla

+0

au lieu de Regex.Split (data, "version ="); pourquoi pas simplement data.Substring ("version =". Length); –

Répondre

6

Il semble que vous vouliez vérifier si la version du programme courant est inférieure à la chaîne de version que vous venez de télécharger. Au lieu d'utiliser la comparaison d'entiers, vous pouvez simplement faire une comparaison de version. Créer un objet à partir d'une version chaîne téléchargement: var downloadedVersion = new Version(versionStringDownloadedFromWeb); et comparer à la version assemblys:

if (Assembly.GetExecutingAssembly().GetName().Version < downloadedVersion) 
{ 
    // Your version is outdated! 
} 

Vous pouvez le faire puisque les objets Version implémente l'interface IComparable.

0

Assembly.GetExecutingAssembly().GetName().Version.ToString(); sera au format "x.y.z.q" et ne peut pas être analysé comme un nombre entier. essayez

var appVersion = Assembly.GetExecutingAssembly().GetName().Version.Major; 

qui vous donnera le numéro de version comme un int