/// <summary> /// 转换为短格式的版本字符描述,会去掉后面的0; /// </summary> public static string ToShortString(this Version value) { if (!value.IsValid()) { return(string.Empty); } if (value.Minor <= 0 && value.Build <= 0 && value.Revision <= 0) { return(string.Format("{0}", value.Major)); } if (value.Build <= 0 && value.Revision <= 0) { return(string.Format("{0}.{1}", value.Major, value.Minor)); } if (value.Revision <= 0) { return(string.Format("{0}.{1}.{2}", value.Major, value.Minor, value.Build)); } return(string.Format("{0}.{1}.{2}.{3}", value.Major, value.Minor, value.Build, value.Revision)); }
/// <summary> /// Esegue il controllo sulle versioni e lancia il programma di aggiornamento. /// </summary> private void CheckForUpdates() { string theVersion = null; if (this.myVersion == null) { var myDir = System.Reflection.Assembly.GetExecutingAssembly().Location; myDir = System.IO.Path.GetDirectoryName(myDir); var myFiles = System.IO.Directory.GetFiles(myDir); string myManifest = null; foreach (var f in myFiles) { if (f.ToLower().EndsWith(".vsixmanifest")) { myManifest = f; break; } } if (myManifest == null) { return; } using (var theFile = System.IO.File.OpenRead(myManifest)) { var xml = System.Xml.XmlReader.Create(theFile); xml.ReadToFollowing("Version"); theVersion = xml.ReadString(); xml.Close(); } if (theVersion == null) { return; } this.myVersion = new Version(theVersion); if (!this.myVersion.IsValid()) { this.myVersion = null; return; } } if (System.IO.Directory.Exists(@"S:\AlmaStyleFix\Updates")) { var files = new System.Collections.Generic.List<string>(); files.AddRange(System.IO.Directory.GetFiles(@"S:\AlmaStyleFix\Updates")); for (int i = 0; i < files.Count; i++) { if (!files[i].EndsWith(".vsix")) { files.RemoveAt(i--); } } if (files.Count > 0) { string fileToUpdate = null; foreach (var f in files) { var theFileVersion = new Version(f); if (!theFileVersion.IsValid()) { continue; } if (theFileVersion > this.myVersion) { fileToUpdate = f; break; } } if (fileToUpdate != null) { if (this.Question(this.locRM.GetString("Update"))) { var commonFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86); commonFolder += "\\microsoft shared\\MSEnv\\"; var launcher = commonFolder + "VSLauncher.exe"; var pi = new System.Diagnostics.ProcessStartInfo(); pi.FileName = launcher; pi.Arguments = fileToUpdate; var p = new System.Diagnostics.Process(); p.StartInfo = pi; p.Start(); } } } } }