Exemple #1
0
        public static void ShowError(string message)
        {
            MessageBoxCustom messageBoxСustom = new MessageBoxCustom("Ошибка", message);

            messageBoxСustom.ShowDialog();
        }
        void Download()
        {
            Progress.Value       = 0;
            GridError.Visibility = Visibility.Hidden;
            int       Description;
            WebClient webClient = new WebClient();

            next = false;
            if (check)
            {
                Progress.Maximum = 5;
                try
                {
                    ShowStatus("Проверка соединения с интернетом...");
                    if (!InternetGetConnectedState(out Description, 0))
                    {
                        throw new Exception("Отсутствует соединение с Интернетом.");
                    }
                    UpdateProgress();
                    ShowStatus("Загрузка данных с хеш-суммой...");
                    webClient.DownloadFile(new Uri("https://raw.githubusercontent.com/mixail167/Millionaire/master/data.md5"), "data.md5");
                    UpdateProgress();
                    ShowStatus("Вычисление хеш-суммы...");
                    if (!File.Exists("data.bin"))
                    {
                        throw new Exception("Файл с основными данными не найден.");
                    }
                    byte[] checkSum = CalculateMD5("data.bin");
                    if (checkSum.Length > 0)
                    {
                        UpdateProgress();
                        if (!File.Exists("data.md5"))
                        {
                            throw new Exception("Файл с хеш-суммой отсутствует.");
                        }
                        byte[] checkSumNew = ReadMD5("data.md5");
                        if (checkSumNew.Length > 0)
                        {
                            if (!checkSumNew.SequenceEqual(checkSum))
                            {
                                UpdateProgress();
                                ShowStatus("Загрузка основных данных...");
                                webClient.DownloadFile(new Uri("https://raw.githubusercontent.com/mixail167/Millionaire/master/data.bin"), "data.bin");
                                UpdateProgress();
                                next = true;
                            }
                            else
                            {
                                this.Hide();
                                MessageBoxCustom messageBoxСustom = new MessageBoxCustom("Внимание", "Обновление данных не требуется.");
                                messageBoxСustom.ShowDialog();
                            }
                        }
                    }
                    Close();
                }
                catch (Exception exception)
                {
                    ShowError(exception.Message);
                }
                finally
                {
                    File.Delete("data.md5");
                }
            }
            else
            {
                Progress.Maximum = 2;
                try
                {
                    ShowStatus("Проверка соединения с интернетом...");
                    if (!InternetGetConnectedState(out Description, 0))
                    {
                        throw new Exception("Отсутствует соединение с Интернетом.");
                    }
                    UpdateProgress();
                    ShowStatus("Загрузка основных данных...");
                    webClient.DownloadFile(new Uri("https://raw.githubusercontent.com/mixail167/Millionaire/master/data.bin"), "data.bin");
                    UpdateProgress();
                    next = true;
                    Close();
                }
                catch (Exception exception)
                {
                    ShowError(exception.Message);
                }
            }
        }