Example #1
0
 public FindUpdate_class(StringBuilder lines, settings_class Settings)
     : base(true)
 {
     this.lines    = lines;
     this.Settings = Settings;
     this.Date     = Settings.LastFileDate;
 }
Example #2
0
        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());
            }
        }