Beispiel #1
0
        public static FileInfo DownloadFileFromURLToPath(string url, string urlMirror, string path, bool callProgressBar, update updateForm, mainform mainMenuForm, string message)
        {
            FileInfo fileInfo = null;

            try
            {
                currentMessage      = message;
                currentUpdateForm   = updateForm;
                currentMainMenuForm = mainMenuForm;
                currentUpdateForm   = updateForm;
                fileInfo            = downloadUrl(url, path, callProgressBar);
                if (fileInfo.Length < 100256)
                {
                    fileInfo = downloadUrl(urlMirror, path, callProgressBar);
                }
                return(fileInfo);
            }
            catch (Exception ex)
            {
                try
                {
                    fileInfo = downloadUrl(urlMirror, path, callProgressBar);
                }
                catch (Exception ex1) { }
                {
                    mainMenuForm.internetIsAbsent = true;
                    MessageBox.Show(ex.ToString());
                }
            }
            return(fileInfo);
        }
Beispiel #2
0
        public static FileInfo DownloadFileFromURLToPath(string url, string urlMirror, string path, bool callProgressBar, update updateForm, mainform mainMenuForm, long totalBytesToUpdate, string message)
        {
            TotalBytesToUpdate  = totalBytesToUpdate;
            currentUpdateForm   = updateForm;
            currentMainMenuForm = mainMenuForm;
            currentMessage      = message;
            FileInfo fileInfo = null;


            try
            {
                fileInfo = downloadUrl(url, path, callProgressBar);
                if (fileInfo.Length < 500256)
                {
                    string text      = File.ReadAllText(path);
                    string substring = text.Substring(0, 34);
                    if (substring == "<!DOCTYPE html><html><head><title>")
                    {
                        fileInfo = downloadUrl(urlMirror, path, callProgressBar);
                    }
                }
            }
            catch
            {
                try
                {
                    fileInfo = downloadUrl(urlMirror, path, callProgressBar);
                }
                catch (Exception Ex)
                {
                }
            }

            return(fileInfo);
        }
        public static bool checkIfUpdateIsRequired(string path, string URI, update updateForm, mainform mainMenuForm)
        {
            bool result = false;
            bool flag   = false;

            path = StringProcessing.StepUp(path);
            string path2 = path + "\\Mods\\version.txt";
            string path3 = path + "\\tempIni.ini";

            string[] info;
            try
            {
                List <string> list = new List <string>();
                Assembly.GetExecutingAssembly().GetManifestResourceNames();
                string[] array;
                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SRHDLauncher.Resources.launсherHash.txt"))
                {
                    int        num        = 0;
                    bool       flag2      = false;
                    TextReader textReader = new StreamReader(stream);
                    string     text2;
                    while ((text2 = textReader.ReadLine()) != null)
                    {
                        num++;
                        if (text2 == "<StartVersions>")
                        {
                            flag2 = true;
                        }
                        if (text2 == "<EndVersions>")
                        {
                            flag2 = false;
                        }
                        if (flag2)
                        {
                            list.Add(text2);
                        }
                    }
                    array = (info = list.ToArray());
                }
                double result2           = 0.0;
                bool   modCfgExistsFlag  = File.Exists(path + "\\Mods\\ModCFG.txt");
                bool   versionExistsFlag = File.Exists(path2);
                if (modCfgExistsFlag && versionExistsFlag)
                {
                    string[] array2 = File.ReadAllLines(path2);
                    if (array2.Length == 0 || !double.TryParse(array2[0], out result2))
                    {
                        return(true);
                    }
                    for (int i = 1; i < array.Length - 1; i += 3)
                    {
                        double num2 = double.Parse(array[i]);
                        flag = !(result2 >= num2);
                        if (flag)
                        {
                            break;
                        }
                    }
                    if (flag && File.Exists(path2))
                    {
                    }
                    result = (flag);
                }
                else
                {
                    result = true;
                }
                File.Delete(path3);
            }
            catch (Exception)
            {
            }
            return(result);
        }
        public static bool checkIfUpdateIsRequired(string path, string URI, string URImirror, string version, update updateForm, mainform mainMenuForm, ref long total, ref string[] text)
        {
            bool   result = false;
            string path2  = path + "\\tempIni.ini";

            try
            {
                string[] array    = File.ReadAllLines(path2);
                FileInfo fileInfo = FileDownloader.DownloadFileFromURLToPath(URI, URImirror, path2, callProgressBar: false, updateForm, mainMenuForm, "");
                string   a        = null;
                if (fileInfo != null)
                {
                    try
                    {
                        total = long.Parse(array[array.Length - 2]);
                        a     = array[array.Length - 1];
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Проблема со стороны загрузки файла настроек на сервер: " + ex.Message);
                    }
                    result = !(a == version);
                    File.Delete(path2);
                }
            }
            catch (Exception)
            {
            }
            return(result);
        }
        public static bool checkIfUpdateIsRequired(string path, string URI, string URIMirror, string version, update updateForm, mainform mainMenuForm, ref long totalBytes)
        {
            bool   result = false;
            string path2  = path + "\\tempIni.ini";

            try
            {
                FileInfo fileInfo = FileDownloader.DownloadFileFromURLToPath(URI, URIMirror, path2, callProgressBar: false, updateForm, mainMenuForm, "");
                if (fileInfo != null)
                {
                    string[] array = File.ReadAllLines(path2);
                    totalBytes = long.Parse(array[array.Length - 3]);
                    string a = array[array.Length - 1];
                    result = !(a == version);
                    File.Delete(path2);
                }
            }
            catch (Exception)
            {
            }
            return(result);
        }
        /// <summary>
        /// Метод, для проверки необходимо ли лаунчеру обновлять предложение
        /// </summary>
        /// <param name="path">Путь к файлу</param>
        /// <param name="URI">Путь к обновлению на гугл диске</param>
        /// <param name="message">Конкретное сообщение для мессейдж бокса об обновлении</param>
        /// <param name="updateForm">Форма с обновлением, если та была вызвана из нее.</param>
        /// <param name="mainMenuForm">Форма главного меню, для смены глобальный параметров</param>
        /// <param name="updateBytes">Суммарное количество байтов что займет скачиваемый файл</param>
        /// <param name="sizeDiffers"></param>
        /// <param name="info"></param>
        /// <returns>Необходимо ли обновлять приложение</returns>
        public static bool checkIfUpdateIsRequired(string path, string URI, ref string message, update updateForm, mainform mainMenuForm, ref long updateBytes, ref bool sizeDiffers, ref string[] info)
        {
            bool result = false;
            bool flag   = false;

            path = StringProcessing.StepUp(path);
            string pathToVersionTxt = path + "\\Mods\\version.txt";

            string text = message;

            try
            {
                List <string> list = new List <string>(); //Список для хранения всех обновлений по версиям
                string[]      updatesArray;               //Массив, в который будет  в дальнейшем превращен список выше
                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SRHDLauncher.Resources.launсherHash.txt"))
                {
                    int        i          = 0;                        //Переменная для итерации
                    bool       flag2      = false;                    //Переменная для проверки, начался ли при парсинге участок с версиями
                    TextReader textReader = new StreamReader(stream); //Объект StreamReader для чтения текстового файла
                    string     text2;                                 // Переменная которая будет отвечать за считывающуюся строку в цикле ниже. Почему-то нельзя объявлять такие вещи в while
                    while ((text2 = textReader.ReadLine()) != null)
                    {
                        i++;
                        if (text2 == "<StartVersions>")
                        {
                            flag2 = true;
                        }
                        if (text2 == "<EndVersions>")
                        {
                            flag2 = false;
                        }
                        if (flag2)
                        {
                            list.Add(text2);
                        }
                    }
                    updatesArray = (info = list.ToArray());
                }
                double result2           = 0.0;
                bool   modCfgExistsFlag  = File.Exists(path + "\\Mods\\ModCFG.txt"); //Условие существования modCfg.txt файла
                bool   versionExistsFlag = File.Exists(pathToVersionTxt);            //Условие существование version.txt файла
                if (modCfgExistsFlag && versionExistsFlag)                           //Если и файл версий, и модкфг существует, в таком случае считается что мод скачен, идет преобразование массива с текстом о версиях в ссылки и их соотвествующие версии, размеры.
                {
                    string[] array2 = File.ReadAllLines(pathToVersionTxt);
                    //В случае если файл версий нельзя пропарсить, в таком случае невозможно проверить как много надо добавить патчей поверх, выдаем соотвествующую ошибку и качаем игру с нуля.
                    if (array2.Length == 0 || !double.TryParse(array2[0], out result2))
                    {
                        message = StringProcessing.getMessage(mainMenuForm.Lang, "Файл версий в неверном формате. Невозможно проверить наличие обновлений. Нажмите √ для продолжения", "Version file is incorrect. It's impossible to check, if updates are necssary. Press √ to proceed");
                        return(true);
                    }
                    //Цикл парсящий каждую третью строку, проверяющий, есть ли хоть одно обновление, выше версией нежели в versions.txt
                    for (int i = 1; i < updatesArray.Length - 1; i += 5)
                    {
                        double num2 = double.Parse(updatesArray[i]);
                        flag = !(result2 >= num2);
                        if (flag)
                        {
                            break;
                        }
                    }
                    //Если все выполняется, выводим сообщения об этом, и изменяет результат на то, что обновления таки нужны.
                    if (flag && File.Exists(pathToVersionTxt))
                    {
                        message = StringProcessing.getMessage(mainMenuForm.Lang, "Доступна новая версия мода. Нажмите √ для продолжения", "The mod update is avaliable. Press √ to proceed");
                    }
                    result = (flag);
                }
                else
                {
                    //Обновления нужны, но, идет проверка. Первый раз ли ставится Мод (нету ни версий, ни мод кфг), либо проблема какая-либо с файлом версий.
                    if ((modCfgExistsFlag && !versionExistsFlag))
                    {
                        message = StringProcessing.getMessage(mainMenuForm.Lang, "Отсуствует файл версий. Нажмите √ для продолжения", "Version file is absent. Press √ to proceed");
                    }
                    if ((!modCfgExistsFlag && !versionExistsFlag) || (!modCfgExistsFlag && versionExistsFlag))
                    {
                        message = StringProcessing.getMessage(mainMenuForm.Lang, "Мод еще не установлен.Нажмите √ для продолжения", "Version file or ModCfg is absent.Press √ to proceed");
                    }
                    result = true;
                }
            }
            catch (Exception) { }
            return(result);
        }