public void LoadGroupData() { GroupDetailsObject = GroupTuppleObject.Item1; DeleteGroup.Visible = true; this.Text = "Group : " + GroupDetailsObject.Name; NameTextBox.Text = GroupDetailsObject.Name; PathTextBox.Text = GroupDetailsObject.Path; GroupFileDialog.InitialDirectory = System.IO.Path.GetDirectoryName(GroupDetailsObject.Path); GroupFileDialog.FileName = System.IO.Path.GetFileName(GroupDetailsObject.Path); if (GroupDetailsObject.Enabled) { EnabledComboBox.SelectedIndex = 0; } else { EnabledComboBox.SelectedIndex = 1; } switch (GroupDetailsObject.ScheduleOccurrence) { case "weekly": OccurrenceComboBox.SelectedIndex = 0; break; case "daily": OccurrenceComboBox.SelectedIndex = 1; break; case "interval": OccurrenceComboBox.SelectedIndex = 2; break; } DayComboBox.SelectedIndex = GroupDetailsObject.ScheduleDay - 1; HourTextBox.Text = GroupDetailsObject.ScheduleTime.Hour.ToString(); MinuteTextBox.Text = GroupDetailsObject.ScheduleTime.Minute.ToString().PadLeft(2, '0'); IntervalTextBox.Text = GroupDetailsObject.ScheduleInterval.ToString(); CreateSaveGroupButton.Text = "Save Group"; CancelCloseButton.Text = "Close"; IntervalComboBox.SelectedIndex = 0; GroupID = GroupDetailsObject.ID; GroupIDLabel.Text = "ID : " + GroupID.ToString(); TasksLoadedCount = 0; TaskCollectionObject = GroupTuppleObject.Item2; NumberOfTasks = TaskCollectionObject.TaskList.Count; TotalTasksLabel.Text = "Total Tasks : " + NumberOfTasks.ToString(); foreach (Task TaskObject in TaskCollectionObject.TaskList) { ThreadPool.QueueUserWorkItem(new WaitCallback(PopulateTasks), TaskObject); } }
private void PerformUpdate() { if (StartupArguments.MCSyncProcessID != -1) { NonTaskExecuting?.Invoke(this, "Waiting for MCSync to close..."); while (Process.GetProcesses().Any(p => p.Id == StartupArguments.MCSyncProcessID)) { Thread.Sleep(50); } } NetworkCredential ftpCredentials = new NetworkCredential("Reporting", "NetLogon"); FtpWebRequest webRequest = (FtpWebRequest)WebRequest.Create($"ftp://www.clussmanproductions.com/support/MCSyncNew/updates/{StartupArguments.VersionToDownload}"); webRequest.Method = WebRequestMethods.Ftp.ListDirectory; webRequest.Credentials = ftpCredentials; string files; try { using (Stream responseStream = webRequest.GetResponse().GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream)) { files = reader.ReadToEnd(); } } catch (WebException _) { InvalidVersion?.Invoke(this, new EventArgs()); return; } using (StringReader reader = new StringReader(files)) { string file; int counter = 0; while ((file = reader.ReadLine()) != null) { counter++; } NumberOfTasks?.Invoke(this, counter); } string directoryPrefix = ""; if (!string.IsNullOrEmpty(StartupArguments.FolderToDelete) && Directory.GetCurrentDirectory().Contains(StartupArguments.FolderToDelete)) { directoryPrefix = "..\\"; } using (StringReader reader = new StringReader(files)) { string file; while ((file = reader.ReadLine()) != null) { TaskExecuting?.Invoke(this, "Downloading " + file); webRequest = (FtpWebRequest)WebRequest.Create($"ftp://www.clussmanproductions.com/support/MCSyncNew/updates/{StartupArguments.VersionToDownload}/{file}"); webRequest.Credentials = ftpCredentials; webRequest.Method = WebRequestMethods.Ftp.DownloadFile; using (Stream responseStream = webRequest.GetResponse().GetResponseStream()) using (Stream fileStream = File.Create(directoryPrefix + file)) { responseStream.CopyTo(fileStream); } } } StringBuilder argumentBuilder = new StringBuilder($"-processID {Process.GetCurrentProcess().Id}"); if (!string.IsNullOrEmpty(StartupArguments.FolderToDelete)) { argumentBuilder.Append($" -folder {StartupArguments.FolderToDelete}"); } NonTaskExecuting?.Invoke(this, "Starting MCSync..."); ProcessStartInfo startInfo = new ProcessStartInfo(directoryPrefix + "MesaSuite.exe", argumentBuilder.ToString()); startInfo.WorkingDirectory = Directory.GetCurrentDirectory() + directoryPrefix; Process.Start(startInfo); }