0,0 → 1,146 |
using System; |
using System.Collections.Generic; |
using System.ComponentModel; |
using System.Data; |
using System.Drawing; |
using System.Linq; |
using System.Text; |
using System.Windows.Forms; |
using System.Diagnostics; |
using System.Threading; |
|
namespace SWAT_USB_App |
{ |
public partial class form_Software : Form |
{ |
public static List<string> softwareList = new List<string>(); |
private static List<Process> toInstall = new List<Process>(); |
private static List<CheckBox> formCheckBoxes = new List<CheckBox>(); |
private static form_Software _software_Form = null; |
public static form_Software software_Form_Instance |
{ |
set |
{ |
_software_Form = value; |
} |
get |
{ |
if (_software_Form == null) |
_software_Form = new form_Software(); |
return _software_Form; |
} |
} |
public form_Software() |
{ |
try |
{ |
DebugText.appendText("Software form initializing"); |
// Draws the form with a checkbox for each software specified in the text file |
InitializeComponent(); |
// Location placeholder |
int nextXLocation = 6, nextYLocation = 19; |
// Updates the groupbox size to hold all the checkboxes |
this.groupBox_SoftwareList.Size = new Size(169, 40 + (softwareList.Count - 1) * 23); |
// Updates the window size to hold all the checkboxes + buttons |
this.Size = new Size(200, 121 + (softwareList.Count - 1) * 23); |
formCheckBoxes.Clear(); |
// Adds a checkbox for each software item, adds checkbox to list formCheckBoxes |
foreach (string str in softwareList) |
{DebugText.appendText("Checking if applications in softwareList is marked as default"); |
CheckBox chkBox = new CheckBox(); |
chkBox.Name = "chk_" + str; |
chkBox.AutoSize = true; |
// Removes the brackets from the name |
chkBox.Text = str; |
// Checks the checkbox if default is set to yes |
if (SettingsParser.isDefaultCheck(str)) |
chkBox.Checked = true; |
chkBox.Location = new Point(nextXLocation, nextYLocation); |
// Increments the location placeholder for the next checkbox |
nextYLocation += 23; |
this.groupBox_SoftwareList.Controls.Add(chkBox); |
formCheckBoxes.Add(chkBox); |
} |
} |
catch (Exception e) |
{ |
DebugText.appendText("Exception Thrown: " + e.ToString()); |
MessageBox.Show(e.ToString()); |
} |
} |
private void updateToInstallList() |
{ |
try |
{ |
DebugText.appendText("Updating list of processes to run from list of software checked"); |
toInstall.Clear(); |
// Updates list toInstall with processes for each software checked |
for (int i = 0; i < softwareList.Count; i++) |
{ |
if (formCheckBoxes[i].Checked) |
{ |
string[] temp; |
temp = SettingsParser.getSetupLocation(formCheckBoxes[i].Text); |
for (int j = 0; j < temp.Count(); j += 2) |
{ |
Process proc = new Process(); |
proc.StartInfo.FileName = Initialization.pathToSWATDrive + temp[j]; |
proc.StartInfo.Arguments = temp[j + 1]; |
toInstall.Add(proc); |
} |
} |
} |
} |
catch (Exception e) |
{ |
DebugText.appendText("Exception Thrown: " + e.ToString()); |
MessageBox.Show(e.ToString()); |
} |
} |
private void startSoftwareInstaller(List<Process> toInstall, int ID) |
{ |
DebugText.appendText("Starting to install softwares from list of processes"); |
try |
{ |
// Goes through list toInstall and runs each process after the previous one ends |
int tempID = ID; |
if (tempID < toInstall.Count) |
{ |
DebugText.appendText("Running setup " + toInstall[ID].StartInfo.FileName + " with arguments " + toInstall[ID].StartInfo.Arguments); |
toInstall[ID].Start(); |
while (!toInstall[ID].HasExited) |
{ |
// Waits for installer to finish before starting the next one |
Thread.Sleep(3000); |
} |
if (toInstall[ID].HasExited) |
{ |
DebugText.appendText("Setup is detected as finished, running next setup"); |
tempID++; |
startSoftwareInstaller(toInstall, tempID); |
} |
} |
} |
//catch (Win32Exception e) |
//{ |
|
//} |
catch (Exception e) |
{ |
DebugText.appendText("Exception Thrown: " + e.ToString()); |
MessageBox.Show(e.ToString()); |
} |
} |
private void btn_Ok_Click(object sender, EventArgs e) |
{ |
updateToInstallList(); |
startSoftwareInstaller(toInstall, 0); |
this.Close(); |
} |
private void btn_Cancel_Click(object sender, EventArgs e) |
{ |
DebugText.appendText("Closing software form"); |
software_Form_Instance.Close(); |
} |
} |
} |