public FindUpdate_class(StringBuilder lines, settings_class Settings) : base(true) { this.lines = lines; this.Settings = Settings; this.Date = Settings.LastFileDate; }
public static void UpdateAutoUpdate(string FileName, string Command) { settings_class Settings; var Log = false; switch (Command) { /*case "settings": * Settings = new settings_class(FileName); * SettingsMark: ; * //Application.EnableVisualStyles(); * //Application.SetCompatibleTextRenderingDefault(false); * * if (Settings.MainPass.Length == 0) * { new Settings_Form(Settings).ShowDialog(); } * else * { new Password_Form(Settings).ShowDialog(); } * return; * case "log": * Log = true; * goto Default; * default: * if (Command.Length > 4 && Command.Substring(0, 4) == "fsn-") * { FileName = Command.Substring(4, Command.Length - 4); } * Default: ;*/ default: Settings = new settings_class(FileName); /*if (Settings.MainPass.Length == 0) * { goto SettingsMark; }*/ break; } var lines = new StringBuilder(); lines.AppendLine(DateTime.Now.ToString() + " - Старт обновления"); string FilePath = null; var date = DateTime.MaxValue; switch (Settings.UpdateType) { case settings_class.UpdateType_enum.Mail: if (!File.Exists("ImapX_cp.dll")) { lines.AppendLine(DateTime.Now.ToString() + " - Библиотека ImapX не найдена"); goto End; } { var s = new FindUpdate_class(lines, Settings); new Progress_Form(s).ShowDialog(); FilePath = s.FilePath; date = s.Date; } break; case settings_class.UpdateType_enum.Path: lines.AppendLine(DateTime.Now.ToString() + " - поиск файла обновления"); if (Settings.FileUpdateLocation.Length == 0 || !File.Exists(Settings.FileUpdateLocation)) { FilePath = null; } else { FilePath = Settings.FileUpdateLocation; date = File.GetLastWriteTime(FilePath); date = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second); //приходится костылить, чтоб даты были одинаковыми, с точностью до секунды if (date <= Settings.LastFileDate) { FilePath = null; } } break; default: lines.AppendLine(DateTime.Now.ToString() + " - неизвестный тип обновления"); break; } if (FilePath != null && File.Exists(FilePath)) { var Processes = System.Diagnostics.Process.GetProcessesByName(Settings.FileName); for (int i = 0; i < Processes.Length; i++) { if (!Processes[i].CloseMainWindow()) { Processes[i].Kill(); } } { var sevenzdllname = Get7zdllName(); if (sevenzdllname == null) { lines.AppendLine(DateTime.Now.ToString() + " - библиотека не найдена"); goto End; } else { SevenZip.SevenZipCompressor.SetLibraryPath( Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), sevenzdllname)); lines.AppendLine(DateTime.Now.ToString() + " - распаковка архива обновления"); } } { var Password = Settings.ArchPass; Settings.Close(); if (new Progress_Form(new Extract_class(FilePath, Password)).ShowDialog() == DialogResult.OK) { lines.AppendLine(DateTime.Now.ToString() + " - распаковка прошла успешно"); Settings.Open(); Settings.LastFileDate = date; Settings.LastUpdateDate = DateTime.Now; } else { lines.AppendLine(DateTime.Now.ToString() + " - распаковна не была произведена"); Settings.Open(); } } } if (Settings.StartFile) { System.Diagnostics.Process.Start(Settings.FileName); } End :; if (Log) { WriteLog(lines.ToString()); } }