/// <summary> /// Manages component install/uninstall /// </summary> /// <param name="isInstall">true if install / false if uninstall</param> private void _Process(bool isInstall) { // Current culture //string selectedCulture = gameCultureComboBox.Text.Substring(0, 2); //DB.Culture currentCulture = (DB.Culture) Enum.Parse(typeof (DB.Culture), selectedCulture); // EVO_147 const DB.Culture currentCulture = DB.Culture.US; // Selects right patch according to install/uninstall case PCH currentPatch = (isInstall ? _CurrentInstallPatch : _CurrentUninstallPatch); // TDU folder (override) Tools.TduPath = tduPathTextbox.Text; // Authorization checks // If specified ref matches a car pack vehicle, TDU version must be '1.66+megapack' if (Tools.InstalledTduVersion != Tools.TduVersion.V1_66_Megapack) { // Loading reference try { VehicleSlotsHelper.InitReference(Application.StartupPath + LibraryConstants.FOLDER_XML); // Getting vehicle information... if (!Tools.KEY_MISC_SLOT.Equals(_CurrentInstallPatch.SlotRef) && VehicleSlotsHelper.VehicleInformation.ContainsKey(currentPatch.SlotRef)) { VehicleSlotsHelper.VehicleInfo info = VehicleSlotsHelper.VehicleInformation[currentPatch.SlotRef]; if (info.isAddon) { MessageBoxes.ShowWarning(this, _ERROR_MOD_NOT_ALLOWED); return; } } } catch (Exception ex) { MessageBoxes.ShowError(this, ex); return; } } // If another mod is installed on current slot... // Exception for Patch 1.67d if (isInstall && InstallHelper.IsAnotherModInstalled(currentPatch.SlotRef, currentPatch.Name) && !AppConstants.SLOT_COMMUNITY_PATCH.Equals(currentPatch.SlotRef)) { MessageBoxes.ShowWarning(this, string.Format(_ERROR_ANOTHER_MOD_INSTALLED, InstallHelper.GetInstalledModName(currentPatch.SlotRef))); return; } // EVO_134 Group handling, if necessary List <string> chosenInstallGroups = new List <string> { PCH.REQUIRED_GROUP_NAME }; if (isInstall && currentPatch.Groups.Count > 1) { GroupsDialog dlg = new GroupsDialog(_CurrentInstallPatch); DialogResult dr = dlg.ShowDialog(this); if (dr == DialogResult.OK) { chosenInstallGroups = dlg.ChosenGroups; } else { return; } } // Patch logger init string logFile = Application.StartupPath + LibraryConstants.FILE_LOG_PATCH; Log patchLog = new Log(logFile); patchLog.Appenders.Add(new ConsoleAppender()); // EVO_100: progress bar init progressPanel.Visible = true; infoLabel.Visible = false; mainProgressBar.Minimum = 0; mainProgressBar.Maximum = currentPatch.PatchInstructions.Count; mainProgressBar.Step = 1; mainProgressBar.Value = 0; PatchHelper.ProgressBar = mainProgressBar; // Using new helper try { InstallHelper.RunAll(currentPatch, patchLog, currentCulture, isInstall, chosenInstallGroups); Application.DoEvents(); // Showing gui messages foreach (string message in PatchHelper.Messages) { MessageBoxes.ShowWarning(this, message); } // OK MessageBoxes.ShowInfo(this, isInstall ? _MESSAGE_PATCH_SUCCESS : _MESSAGE_PATCH_UNINSTALL_SUCCESS); // Refreshing window contents //_LoadData(_CurrentInstallPatch.FileName, (_CurrentUninstallPatch == null) ? null : _CurrentUninstallPatch.FileName); // Contextual information has to be updated _UpdateContextualControls(); } catch (Exception ex) { // Showing messages first foreach (string message in PatchHelper.Messages) { MessageBoxes.ShowWarning(this, message); } if (PatchHelper.Messages.Count == 0) { MessageBoxes.ShowError(this, ex); } } finally { // Hiding progress bar progressPanel.Visible = false; } }