public update(string executePath, bool updateRequired, long totalBytes, mainform form, bool isModInstalled, string[] info, bool reinstall, bool downloadSR1HDMode) { //Присваивает все переменные bool sizeDiffers = false; string[] array = null; this.reinstall = reinstall; this.downloadSR1HDMode = downloadSR1HDMode; this.info = info; this.updateRequired = updateRequired; this.form = form; this.executePath = executePath; this.isModInstalled = isModInstalled; //Назначаемсвойства прогресс бара progressBar = new CustomProgressBar(); progressBar.Size = new Size(775, 19); progressBar.Location = new Point(121, 544); progressBar.DisplayStyle = ProgressBarDisplayText.CustomTex; base.Controls.Add(progressBar); InitializeComponent(); //Добавляем некотрые кастомные события base.MouseDown += settings_MouseDown; base.MouseDown += pictureBox1_MouseDown; base.MouseDown += pictureBox1_MouseDown; base.Closing += OnClosing; //Меняем визуальную и функциоальную составляющую кнопки на выключенную degenerateChoice.Enabled = false; degenerateChoice.Image = SRHDLauncher.Properties.Resources._2OkD; //Проверка на наличие обновлений? Нужна ли? if (!downloadSR1HDMode) { string message = ""; updateRequired = (reinstall || BoolConfirmation.checkIfUpdateIsRequired(executePath, "https://drive.google.com/file/d/1jDScpEkq-mybtv4SNtL-rjyE-9wM4Uos/view?usp=sharing", ref message, this, form, ref totalBytes, ref sizeDiffers, ref array)); } //Выключение лишних кнопок в основной форме, дабы не было дубликатов form.changeEnabledStatusButtons(); form.checkUpdates.Enabled = false; form.checkUpdates.Image = SRHDLauncher.Properties.Resources._2SettingsD; //Установка соотвествующего языка в форме if (form.Lang == "ru") { setRu(); progressBar.CustomText = "Инициализация..."; } if (form.Lang == "eng") { setEng(); progressBar.CustomText = "Initialising..."; } Show(); //Запуск механизма обновления updateAppPreparation(); }
public void updateAppPreparation() { ///В случае, если выбрана была скачка SR1HD - качает ее и пропускает все остальное. if (downloadSR1HDMode) { callDownloadSR1HD(); return; } //Установка необходимых параметров для дальнейшего использования. UpdateBytes - максимум размера файла. string message = ""; //Не используется, но необходимый параметр для метода long updateBytes = 1L; bool sizeDiffers = false; //Ваще не помню для чего, уточнить. string[] array = null; updateRequired = (reinstall || BoolConfirmation.checkIfUpdateIsRequired(form.pathToFile, "https://drive.google.com/file/d/1jDScpEkq-mybtv4SNtL-rjyE-9wM4Uos/view?usp=sharing", ref message, this, form, ref updateBytes, ref sizeDiffers, ref array)); if (updateRequired) { form.updateInProgress = true; string path = StringProcessing.StepUp(form.pathToFile) + "\\Mods\\version.txt"; string path2 = StringProcessing.StepUp(form.pathToFile) + "\\Mods\\ModCFG.txt"; //Идет проверка, существуют ли оба файла. Если да - он считается установленным if (File.Exists(path) && File.Exists(path2)) { isModInstalled = true; form.isModInstalled = true; } else { isModInstalled = false; form.isModInstalled = false; } // Проверяется, выбрана ли переустановка. В таком случае идет удаление папки модс if (reinstall) { try { Directory.Delete(executePath, recursive: true); } catch (Exception) { } } //Если обновление нужно, то, в зависимости от того, установлен мод или нет качается либо патчи, либо весь архив с игрой. if (updateRequired) { form.updateInProgress = true; //Переменная, которая отвечает за то, при нажатии давать ли окошко о прерывании (и прерывать ли потоки) во время обновления. if (isModInstalled && !reinstall) { downloadAllPatches(false); } else { callWholeUpdate(); } degenerateChoice.Enabled = true; degenerateChoice.Image = SRHDLauncher.Properties.Resources._2OkA; } } }
/// <summary> /// Метод для самого процесса скачки /// </summary> /// <param name="zipFilePath"></param> /// <param name="zipFileFolderPath"></param> public static void Download(string zipFilePath, string zipFileFolderPath) { wc = new WebClient(); zipReadingStream = wc.OpenRead(zipFilePath); zip = new ZipArchive(zipReadingStream); zip.ExtractToDirectory(zipFileFolderPath, _progress); flag = BoolConfirmation.checkIfUpdateIsRequired(form2.pathToFile, "https://drive.google.com/file/d/1jDScpEkq-mybtv4SNtL-rjyE-9wM4Uos/view?usp=sharing", form1, form2); form1.flagToContinue = flag; form1.RepeatUntilBusy(wc); disposeHere(); File.Delete(archivePath); form2.updateInProgress = false; form2.archiveBegun = false; string message = ""; long updateBytes = 1L; bool sizeDiffers = false; string[] info = null; Thread.Sleep(1500); flag = BoolConfirmation.checkIfUpdateIsRequired(form2.pathToFile, "https://drive.google.com/file/d/1jDScpEkq-mybtv4SNtL-rjyE-9wM4Uos/view?usp=sharing", ref message, form1, form2, ref updateBytes, ref sizeDiffers, ref info); form1.flagToContinue = true; form1.isModInstalled = true; form2.isModInstalled = true; form2.updateRequired = flag; form1.updateRequired = flag; if (form1.reinstall) { form1.reinstall = false; form1.isModInstalled = true; } if (!flag || patch) { form2.updateInProgress = false; } else { form1.downloadAllPatches(true); } //костыль по смене галочки для скачки фигни //Установка технически переменных, которые были не убраны из метода по обновлению короч этого самого вашего лончера. }