рд╕реА # рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЕрджреНрдпрддрдиред рднрд╛рдЧ реи

рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ C # рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред

рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдХреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, "рдкреБрд░рд╛рдиреА" рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рд╕рд╣рд┐рдд рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЙрд╕ рдХреЛрдб рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЗрд╕рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рд╕рдВрд╕рд╛рдзрд┐рдд рднрд╛рдЧреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред


рдореБрдЦреНрдп рдмрд┐рдВрджреБ


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЦрд╛рдорд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА (рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рди рдкрд░ рдореИрдВрдиреЗ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛):

рдмреЗрд╢рдХ, рдЗрди рдХреЗ рд╕рдорд╛рди рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрди рд╕рднреА рдХреЛ рдирд╣реАрдВ рджрд┐рдпрд╛, рдФрд░ рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ред

рд╕рдВрд╢реЛрдзрди


рдЪреВрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлрд╝рд╛рдЗрд▓ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧреА, рдХреЛрдб рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╢реЛрдзрди рдХрд┐рдП рдЧрдП рдереЗ:

public void checkUpdates(){ try { if (File.Exists("launcher.update") && new Version(FileVersionInfo.GetVersionInfo("launcher.update").FileVersion) > new Version(Application.ProductVersion)) { Process.Start("updater.exe", "launcher.update \"" + Process.GetCurrentProcess().ProcessName + "\""); Process.GetCurrentProcess().CloseMainWindow(); } else { if (File.Exists("launcher.update")) { File.Delete("launcher.update"); } Download(); } } catch (Exception) { if (File.Exists("launcher.update")) { File.Delete("launcher.update"); } Download(); } } 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЙрдиреНрдЪрд░.рдЕрдкрдбреЗрдЯ рдЕрдкрдбреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рднреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рд╣реИ, рддреЛ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЕрдкрд╡рд╛рдж рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХреНрд╖рддрд┐рдЧреНрд░рд╕реНрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рд╕рд╛рдЗрдЯ рдкрд░ рдЪреЗрдХрд┐рдВрдЧ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ (рдпрджрд┐ рдкрд╛рдпрд╛ рдЧрдпрд╛) рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред
рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд░реНрддрдорд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд updater.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╣реИред рдореИрдВрдиреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд▓рд┐рдЦрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдерд╛ ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЕрджреНрдпрддрди рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред

 private void Download() { try { XmlDocument doc = new XmlDocument(); doc.Load(@"http://mysite/version.xml"); remoteVersion = new Version(doc.GetElementsByTagName("version")[0].InnerText); localVersion = new Version(Application.ProductVersion); if (localVersion < remoteVersion) { if (File.Exists("launcher.update")) { File.Delete("launcher.update"); } WebClient client = new WebClient(); client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); client.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); client.DownloadFileAsync(new Uri(@"http://mysite/launcher.exe"), "launcher.update"); } } catch (Exception) { } } 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБ рдмрд┐рд▓реНрдЯ-рдЗрди System.Version рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╕рддреНрдпрд╛рдкрди рдХреА рд╕рдорд╕реНрдпрд╛, рдХрд╣рддреЗ рд╣реИрдВ, "9.12.2 рдФрд░" 10.0.0 ", рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдШрдЯрдирд╛ рдореЗрдВ рдХрд┐ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛрддреА рд╣реИрдВ: рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдЕрдкрдбреЗрдЯ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдФрд░ 2 рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
  1. рдПрдХ рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдиреЗ рд╕реЗ , рдХрд╛рд░реНрдпрдХреНрд░рдо рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛;
  2. рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ, рдЕрдЧрд▓реА рдмрд╛рд░ рдХреЛрдИ рд╕реВрдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЕрдкрдбреЗрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреАред


рдирд┐рд╖реНрдХрд░реНрд╖


рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЛрдб рдЕрдзрд┐рдХ рд╕рд╣реА рдирд┐рдХрд▓рд╛, рдФрд░ "рдмрд┐рдЯ" рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рднреА рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЪреЗрдХрд╕рдо рдХреА рдЬрд╛рдБрдЪ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдореА рд╣реИред

рдФрд░ рдореИрдВ рдЕрдкрдиреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ : DarkByte , naum , iroln , eyeless_watcher , teleavtomatika , wire ред

рд╕рд╛рджрд░, рдПрдВрдбреНрд░рдпреВ рд╣реЗрд▓рдбрд░!

рдкреБрдирд╢реНрдЪ: рдирд╛рдмрд╛рд▓рд┐рдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕реЗ рджрдпрд╛рд▓реБ рд▓реЛрдЧ - рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджрдпрд╛рд▓реБ рдмрдиреЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдореИрдВ рдХрд╣рд╛рдВ рдЧрд▓рдд рд╣реВрдВред

рдпреБрдкреАрдбреАред рд╣рдо рд╡рд┐рдирдореНрд░рддрд╛рдкреВрд░реНрд╡рдХ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА "рдХреБрдЯрд┐рд▓ рд╣рд╛рде", "рдХреБрдЯрд┐рд▓ рдХреЛрдб" рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдЖрдкрдХреА рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдмреЗрд╣рддрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕реАрдЦреВрдВред
рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In217633/


All Articles