Some software install can spawn a child process that never exits. We want to be able to ignore child processes that don't exit after installation is finished
This commit is contained in:
@@ -1,23 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,24 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
@@ -249,7 +239,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
}
|
}
|
||||||
else if (additionalFileMissing.Length > 0)
|
else if (additionalFileMissing.Length > 0)
|
||||||
{
|
{
|
||||||
((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, "File \"" + additionalFileMissing + "\" is missing. \n\nProceeding with running pre-build script to create necessary files." , "Info", -1);
|
((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, "File \"" + additionalFileMissing + "\" is missing. \n\nProceeding with running pre-build script to create necessary files.", "Info", -1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -283,7 +273,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
setupSuccessful = false;
|
setupSuccessful = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( msg.Length > 0 )
|
if (msg.Length > 0)
|
||||||
UpdateStatusDisplayAndLogEvent(msg, msg, textPropList);
|
UpdateStatusDisplayAndLogEvent(msg, msg, textPropList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,7 +526,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
textProp.textFont = new Font(textProp.textFont, FontStyle.Bold);
|
textProp.textFont = new Font(textProp.textFont, FontStyle.Bold);
|
||||||
textPropList.Add(textProp);
|
textPropList.Add(textProp);
|
||||||
|
|
||||||
if (errMsg.Length > 0 )
|
if (errMsg.Length > 0)
|
||||||
msg = " - FAILED. " + errMsg;
|
msg = " - FAILED. " + errMsg;
|
||||||
else
|
else
|
||||||
msg = " - FAILED. " + additionalFileMissing + " not found.";
|
msg = " - FAILED. " + additionalFileMissing + " not found.";
|
||||||
|
|||||||
@@ -146,12 +146,22 @@ step = INSTALL_SOFTWARE_PACKAGES,Install_Software
|
|||||||
;
|
;
|
||||||
; ******************************************************************************************************************************
|
; ******************************************************************************************************************************
|
||||||
[Install_Software]
|
[Install_Software]
|
||||||
app5_name = Visual Studio 2022
|
;app5_name = Visual Studio 2022
|
||||||
app5_setup_argument = -p --norestart --noweb --add Microsoft.VisualStudio.Workload.ManagedDesktop;includeRecommended Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended Microsoft.VisualStudio.Component.VC.ATLMFC Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Workload.VisualStudioExtension;includeRecommended
|
;app5_setup_argument = -p --norestart --noweb --add Microsoft.VisualStudio.Workload.ManagedDesktop;includeRecommended Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended Microsoft.VisualStudio.Component.VC.ATLMFC Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Workload.VisualStudioExtension;includeRecommended
|
||||||
app5_reg_path = VisualStudio.DTE.17.0
|
;app5_reg_path = VisualStudio.DTE.17.0
|
||||||
app5_reg_type = classes_root
|
;app5_reg_type = classes_root
|
||||||
app5_setup_file = D:\Windows_Stuff\Visual_Studio_2022.17.9.5\vs_setup.exe
|
;app5_setup_file = D:\Windows_Stuff\Visual_Studio_2022.17.9.5\vs_setup.exe
|
||||||
app5_install_process_name = setup
|
;app5_install_process_name = setup
|
||||||
|
|
||||||
|
app6_name = TestStand 2019
|
||||||
|
app6_reg_display_name = NI TestStand (32-bit)
|
||||||
|
app6_reg_type = local_machine
|
||||||
|
app62_reg_value = 19
|
||||||
|
app62_reg_name = DisplayVersion
|
||||||
|
app62_reg_compare = gte
|
||||||
|
app6_setup_file = C:\Users\Duc\Desktop\TestStand_2019\Install.exe
|
||||||
|
app6_spawned_processes_to_ignore = nierserver
|
||||||
|
app6_reboot_computer_at_completion = true
|
||||||
|
|
||||||
; ******************************************************************************************************************************
|
; ******************************************************************************************************************************
|
||||||
; THIS SECTION IS OPTIONAL
|
; THIS SECTION IS OPTIONAL
|
||||||
|
|||||||
@@ -1,25 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Management;
|
||||||
using CommonLib.Windows.Misc;
|
using System.Text.RegularExpressions;
|
||||||
using CommonLib.IO;
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Misc;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
@@ -265,7 +253,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
setupSuccessful = NetworkManagement.SetNetworkAdapterIpAddress(networkAdapterConfiguration, networkAdapterIp, networkAdapterSubnetMask, ref errMsg);
|
setupSuccessful = NetworkManagement.SetNetworkAdapterIpAddress(networkAdapterConfiguration, networkAdapterIp, networkAdapterSubnetMask, ref errMsg);
|
||||||
|
|
||||||
indentation = Common.getIndentation(1);
|
indentation = Common.getIndentation(1);
|
||||||
msg = "\n" + indentation + "Setting IP=" + networkAdapterIp + " and subnet=" + networkAdapterSubnetMask + " for network adapter at PCI Location " + pciLocation;
|
msg = "\n" + indentation + "Setting IP=" + networkAdapterIp + " and subnet=" + networkAdapterSubnetMask + " for network adapter at PCI Location " + pciLocation;
|
||||||
|
|
||||||
if (setupSuccessful)
|
if (setupSuccessful)
|
||||||
{
|
{
|
||||||
@@ -298,7 +286,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
UpdateStatusDisplayAndLogEvent(msg2, msg2, textPropList2);
|
UpdateStatusDisplayAndLogEvent(msg2, msg2, textPropList2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (setupSuccessful && networkAdapterDefaultGateway.Length > 0 )
|
if (setupSuccessful && networkAdapterDefaultGateway.Length > 0)
|
||||||
{
|
{
|
||||||
setupSuccessful = NetworkManagement.SetNetworkAdapterDefaultGateway(networkAdapterConfiguration, networkAdapterDefaultGateway, ref errMsg);
|
setupSuccessful = NetworkManagement.SetNetworkAdapterDefaultGateway(networkAdapterConfiguration, networkAdapterDefaultGateway, ref errMsg);
|
||||||
|
|
||||||
@@ -540,7 +528,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
string[] ips = iniKey.iniValue.Split(',');
|
string[] ips = iniKey.iniValue.Split(',');
|
||||||
ips[0] = ips[0].Trim();
|
ips[0] = ips[0].Trim();
|
||||||
|
|
||||||
if ( ips.Length > 1)
|
if (ips.Length > 1)
|
||||||
ips[1] = ips[1].Trim();
|
ips[1] = ips[1].Trim();
|
||||||
List<string> ipList = new List<string>(ips);
|
List<string> ipList = new List<string>(ips);
|
||||||
|
|
||||||
|
|||||||
@@ -1,24 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
@@ -194,8 +186,8 @@ namespace All_Purpose_Auto_Setup
|
|||||||
{
|
{
|
||||||
Hardware.OpenCdDrive(drive.Name);
|
Hardware.OpenCdDrive(drive.Name);
|
||||||
|
|
||||||
tempMsg = "Please insert a disc";
|
tempMsg = "Please insert a disc";
|
||||||
|
|
||||||
if (cdLabel.Length > 0)
|
if (cdLabel.Length > 0)
|
||||||
tempMsg += " labeled \"" + cdLabel + "\"";
|
tempMsg += " labeled \"" + cdLabel + "\"";
|
||||||
|
|
||||||
@@ -401,7 +393,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
{
|
{
|
||||||
// since we are receiving everything that's being output to the standard output
|
// since we are receiving everything that's being output to the standard output
|
||||||
// we're only interested in the response of the command, and not the command itself
|
// we're only interested in the response of the command, and not the command itself
|
||||||
if ( !Regex.IsMatch(e.Data, @"^[a-zA-Z]:[^>]+>.+", RegexOptions.IgnoreCase))
|
if (!Regex.IsMatch(e.Data, @"^[a-zA-Z]:[^>]+>.+", RegexOptions.IgnoreCase))
|
||||||
m_consoleAppStatusMessage = e.Data;
|
m_consoleAppStatusMessage = e.Data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -611,7 +603,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, msg, "Info", -1);
|
((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, msg, "Info", -1);
|
||||||
|
|
||||||
m_parentForm.Invoke((MethodInvoker)(() =>
|
m_parentForm.Invoke((MethodInvoker)(() =>
|
||||||
{
|
{
|
||||||
OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
OpenFileDialog openFileDialog1 = new OpenFileDialog();
|
||||||
|
|
||||||
@@ -786,10 +778,10 @@ namespace All_Purpose_Auto_Setup
|
|||||||
// if the macro in the argument refers to another key the defines a path
|
// if the macro in the argument refers to another key the defines a path
|
||||||
if (matchedPathIndex >= 0 && !idToPath.ContainsKey(matches[i].Groups[0].Value))
|
if (matchedPathIndex >= 0 && !idToPath.ContainsKey(matches[i].Groups[0].Value))
|
||||||
{
|
{
|
||||||
if (PathManip.PathIsFile(entry.Value[matchedPathIndex].iniValue))
|
if (PathManip.PathIsFile(entry.Value[matchedPathIndex].iniValue))
|
||||||
idToPath[matches[i].Groups[0].Value] = Path.GetDirectoryName(Path.GetFullPath(entry.Value[matchedPathIndex].iniValue));
|
idToPath[matches[i].Groups[0].Value] = Path.GetDirectoryName(Path.GetFullPath(entry.Value[matchedPathIndex].iniValue));
|
||||||
else
|
else
|
||||||
idToPath[matches[i].Groups[0].Value] = Path.GetFullPath(entry.Value[matchedPathIndex].iniValue);
|
idToPath[matches[i].Groups[0].Value] = Path.GetFullPath(entry.Value[matchedPathIndex].iniValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
// if the macro in the argument refers to the path defined by primary key app#_path
|
// if the macro in the argument refers to the path defined by primary key app#_path
|
||||||
@@ -888,7 +880,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
if (setupSuccessful)
|
if (setupSuccessful)
|
||||||
{
|
{
|
||||||
if (idToPath.Count > 0)
|
if (idToPath.Count > 0)
|
||||||
{
|
{
|
||||||
// goes through each marco in the argument ini key and replace with actual paths
|
// goes through each marco in the argument ini key and replace with actual paths
|
||||||
foreach (KeyValuePair<string, string> item in idToPath)
|
foreach (KeyValuePair<string, string> item in idToPath)
|
||||||
{
|
{
|
||||||
@@ -899,7 +891,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
tempOneToManyDict[iniVal][matchedArgumentIndex] = iniVal2;
|
tempOneToManyDict[iniVal][matchedArgumentIndex] = iniVal2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
processedEntry = new KeyValuePair<ConfigFileManager.Ini_KeyValue<string>, List<ConfigFileManager.Ini_KeyValue<string>>>(iniVal, new List<ConfigFileManager.Ini_KeyValue<string>>(tempOneToManyDict[iniVal]));
|
processedEntry = new KeyValuePair<ConfigFileManager.Ini_KeyValue<string>, List<ConfigFileManager.Ini_KeyValue<string>>>(iniVal, new List<ConfigFileManager.Ini_KeyValue<string>>(tempOneToManyDict[iniVal]));
|
||||||
|
|||||||
@@ -1,24 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
using CommonLib.Windows.Misc;
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
@@ -407,14 +394,14 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
displayMsg = Regex.Replace(userPrompt["prompt_message"], @"\{newline\}", "\n");
|
displayMsg = Regex.Replace(userPrompt["prompt_message"], @"\{newline\}", "\n");
|
||||||
|
|
||||||
if ( String.Equals(userPrompt["prompt_message_type"], MessageBoxCustom.PopUpMsgType.YESNO.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
if (String.Equals(userPrompt["prompt_message_type"], MessageBoxCustom.PopUpMsgType.YESNO.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||||
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.YESNO, null, displayMsg, "Info", -1);
|
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.YESNO, null, displayMsg, "Info", -1);
|
||||||
else if (String.Equals(userPrompt["prompt_message_type"], MessageBoxCustom.PopUpMsgType.OKCANCEL.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
else if (String.Equals(userPrompt["prompt_message_type"], MessageBoxCustom.PopUpMsgType.OKCANCEL.ToString(), StringComparison.CurrentCultureIgnoreCase))
|
||||||
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.OKCANCEL, null, displayMsg, "Info", -1);
|
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.OKCANCEL, null, displayMsg, "Info", -1);
|
||||||
else
|
else
|
||||||
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, displayMsg, "Info", -1);
|
result = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.INFO, null, displayMsg, "Info", -1);
|
||||||
|
|
||||||
if ( Regex.IsMatch(result, @"(yes|ok)", RegexOptions.IgnoreCase))
|
if (Regex.IsMatch(result, @"(yes|ok)", RegexOptions.IgnoreCase))
|
||||||
{
|
{
|
||||||
msg += " - SUCCESS.";
|
msg += " - SUCCESS.";
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,23 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Text.RegularExpressions;
|
||||||
using CommonLib.IO;
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
@@ -349,7 +338,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
// First, handle the case where an exception was thrown.
|
// First, handle the case where an exception was thrown.
|
||||||
if (e.Error != null)
|
if (e.Error != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (e.Cancelled) // user cancelled
|
else if (e.Cancelled) // user cancelled
|
||||||
{
|
{
|
||||||
@@ -433,7 +422,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_WindowFeature_DataReceived(object sender, DataReceivedEventArgs e)
|
void cmd_WindowFeature_DataReceived(object sender, DataReceivedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,24 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
using CommonLib.Windows.Misc;
|
using CommonLib.Windows.Misc;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
@@ -149,9 +136,9 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
if (String.Equals(registryAction, "delete", StringComparison.OrdinalIgnoreCase))
|
if (String.Equals(registryAction, "delete", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
setupSuccessful = WindowsRegistry.DeleteRegistryValueName(registryPath, getRegistryHive(registryType), entry.Key, ref errMsg);
|
setupSuccessful = WindowsRegistry.DeleteRegistryValueName(registryPath, getRegistryHive(registryType), entry.Key, ref errMsg);
|
||||||
|
|
||||||
msg1 = "\n" + indentation + "Deleting value name " + entry.Key + " in " + registryPath;
|
msg1 = "\n" + indentation + "Deleting value name " + entry.Key + " in " + registryPath;
|
||||||
}
|
}
|
||||||
else // add to registry
|
else // add to registry
|
||||||
{
|
{
|
||||||
@@ -207,7 +194,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( msg1.Length > 0 )
|
if (msg1.Length > 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
// set font to default text and color
|
// set font to default text and color
|
||||||
@@ -270,7 +257,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
UpdateStatusDisplayAndLogEvent(msg1, msg1, textPropList1);
|
UpdateStatusDisplayAndLogEvent(msg1, msg1, textPropList1);
|
||||||
UpdateStatusDisplayAndLogEvent(msg2, msg2, textPropList2);
|
UpdateStatusDisplayAndLogEvent(msg2, msg2, textPropList2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!setupSuccessful)
|
if (!setupSuccessful)
|
||||||
@@ -370,7 +357,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void getRegistryInfo(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys, ref string action,
|
public void getRegistryInfo(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys, ref string action,
|
||||||
ref string registryType, Dictionary<string,string> nameValuePairs)
|
ref string registryType, Dictionary<string, string> nameValuePairs)
|
||||||
{
|
{
|
||||||
Match regExMatch;
|
Match regExMatch;
|
||||||
registryType = "";
|
registryType = "";
|
||||||
@@ -448,9 +435,9 @@ namespace All_Purpose_Auto_Setup
|
|||||||
RegistryHive regHive = RegistryHive.LocalMachine;
|
RegistryHive regHive = RegistryHive.LocalMachine;
|
||||||
|
|
||||||
if (String.Equals(regType, "local_machine", StringComparison.OrdinalIgnoreCase))
|
if (String.Equals(regType, "local_machine", StringComparison.OrdinalIgnoreCase))
|
||||||
regHive = RegistryHive.LocalMachine;
|
regHive = RegistryHive.LocalMachine;
|
||||||
else if (String.Equals(regType, "classes_root", StringComparison.OrdinalIgnoreCase))
|
else if (String.Equals(regType, "classes_root", StringComparison.OrdinalIgnoreCase))
|
||||||
regHive = RegistryHive.ClassesRoot;
|
regHive = RegistryHive.ClassesRoot;
|
||||||
else if (String.Equals(regType, "current_user", StringComparison.OrdinalIgnoreCase))
|
else if (String.Equals(regType, "current_user", StringComparison.OrdinalIgnoreCase))
|
||||||
regHive = RegistryHive.CurrentUser;
|
regHive = RegistryHive.CurrentUser;
|
||||||
else
|
else
|
||||||
@@ -535,7 +522,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
regExMatch = Regex.Match(iniKey.iniValue, @"\[\s*name\s*:\s*(.*[^\s])\s*,\s*value\s*:\s*(.*[^\s])\s*,\s*type\s*:\s*(.*[a-zA-Z])\s*\]", RegexOptions.IgnoreCase);
|
regExMatch = Regex.Match(iniKey.iniValue, @"\[\s*name\s*:\s*(.*[^\s])\s*,\s*value\s*:\s*(.*[^\s])\s*,\s*type\s*:\s*(.*[a-zA-Z])\s*\]", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
// match multi value
|
// match multi value
|
||||||
if ( !regExMatch.Success )
|
if (!regExMatch.Success)
|
||||||
regExMatch = Regex.Match(iniKey.iniValue, @"\[\s*name\s*:\s*(.*[^\s])\s*,\s*:\s*value\s*:\s*(.*[^\s])\s*,\s*type\s*:\s*(.*[a-zA-Z])\s*\]", RegexOptions.IgnoreCase);
|
regExMatch = Regex.Match(iniKey.iniValue, @"\[\s*name\s*:\s*(.*[^\s])\s*,\s*:\s*value\s*:\s*(.*[^\s])\s*,\s*type\s*:\s*(.*[a-zA-Z])\s*\]", RegexOptions.IgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Security.AccessControl;
|
|
||||||
using System.Management;
|
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Text.RegularExpressions;
|
||||||
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Forms;
|
||||||
using CommonLib.Windows.Misc;
|
using CommonLib.Windows.Misc;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
@@ -154,7 +143,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
statusGiven = true;
|
statusGiven = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!statusGiven && File.Exists(shortcutPath))
|
if (!statusGiven && File.Exists(shortcutPath))
|
||||||
{
|
{
|
||||||
msg2 = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.YESNO, null, "Shortcut \"" + Path.GetFileName(shortcutPath) + "\" already exists.\n\nDo you wish to overwrite it?", "Warning!!!", -1);
|
msg2 = ((frmSetupStatusDisplay)m_parentForm).displayMessageBox(MessageBoxCustom.PopUpMsgType.YESNO, null, "Shortcut \"" + Path.GetFileName(shortcutPath) + "\" already exists.\n\nDo you wish to overwrite it?", "Warning!!!", -1);
|
||||||
@@ -276,7 +265,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
public string getShortcutTargetPath(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys)
|
public string getShortcutTargetPath(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys)
|
||||||
{
|
{
|
||||||
string targetPath = "";
|
string targetPath = "";
|
||||||
|
|
||||||
foreach (ConfigFileManager.Ini_KeyValue<string> iniKey in iniKeys)
|
foreach (ConfigFileManager.Ini_KeyValue<string> iniKey in iniKeys)
|
||||||
{
|
{
|
||||||
if (Regex.IsMatch(iniKey.iniKeyName, @"shortcut\d+_target_path", RegexOptions.IgnoreCase))
|
if (Regex.IsMatch(iniKey.iniKeyName, @"shortcut\d+_target_path", RegexOptions.IgnoreCase))
|
||||||
@@ -292,7 +281,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
public string getShortcutArguments(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys)
|
public string getShortcutArguments(List<ConfigFileManager.Ini_KeyValue<string>> iniKeys)
|
||||||
{
|
{
|
||||||
string args = "";
|
string args = "";
|
||||||
|
|
||||||
foreach (ConfigFileManager.Ini_KeyValue<string> iniKey in iniKeys)
|
foreach (ConfigFileManager.Ini_KeyValue<string> iniKey in iniKeys)
|
||||||
{
|
{
|
||||||
if (Regex.IsMatch(iniKey.iniKeyName, @"shortcut\d+_arguments", RegexOptions.IgnoreCase))
|
if (Regex.IsMatch(iniKey.iniKeyName, @"shortcut\d+_arguments", RegexOptions.IgnoreCase))
|
||||||
|
|||||||
@@ -1,15 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
using CommonLib.Windows.Forms;
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
|
|||||||
@@ -1,21 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Linq;
|
||||||
using System.Threading;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using CommonLib.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Windows.Forms;
|
||||||
using CommonLib.Windows.Misc;
|
using CommonLib.Windows.Misc;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
@@ -164,9 +156,9 @@ namespace All_Purpose_Auto_Setup
|
|||||||
|
|
||||||
if (args.Count() > 1)
|
if (args.Count() > 1)
|
||||||
{
|
{
|
||||||
pathAndNameOfConfigFile = args[1];
|
pathAndNameOfConfigFile = args[1];
|
||||||
if (!PathManip.IsAbsolutePath(pathAndNameOfConfigFile))
|
if (!PathManip.IsAbsolutePath(pathAndNameOfConfigFile))
|
||||||
pathAndNameOfConfigFile = Path.GetFullPath(Path.Combine(Application.StartupPath, pathAndNameOfConfigFile));
|
pathAndNameOfConfigFile = Path.GetFullPath(Path.Combine(Application.StartupPath, pathAndNameOfConfigFile));
|
||||||
}
|
}
|
||||||
else if (Properties.Settings.Default["ConfigFile"].ToString().Length > 0)
|
else if (Properties.Settings.Default["ConfigFile"].ToString().Length > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,25 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Security.AccessControl;
|
using System.Text.RegularExpressions;
|
||||||
using System.Management;
|
using System.Threading;
|
||||||
using System.Security.Principal;
|
using System.Windows.Forms;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using Microsoft.Win32;
|
|
||||||
|
|
||||||
using CommonLib.Windows.Forms;
|
|
||||||
using CommonLib.IO;
|
using CommonLib.IO;
|
||||||
using CommonLib.Misc;
|
using CommonLib.Misc;
|
||||||
|
using CommonLib.Windows.Forms;
|
||||||
using CommonLib.Windows.Misc;
|
using CommonLib.Windows.Misc;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
@@ -90,7 +79,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
// process the configuration file
|
// process the configuration file
|
||||||
configFileMgr = new ConfigFileManager(this, pathAndNameOfConfigFile);
|
configFileMgr = new ConfigFileManager(this, pathAndNameOfConfigFile);
|
||||||
|
|
||||||
pathAndNameOfSetupLog = Path.Combine(Application.StartupPath,pathAndNameOfSetupLog);
|
pathAndNameOfSetupLog = Path.Combine(Application.StartupPath, pathAndNameOfSetupLog);
|
||||||
|
|
||||||
pathAndNameOfSetupLog = FileManip.GenerateUniqueFileName(Path.GetDirectoryName(pathAndNameOfSetupLog),
|
pathAndNameOfSetupLog = FileManip.GenerateUniqueFileName(Path.GetDirectoryName(pathAndNameOfSetupLog),
|
||||||
Path.GetFileNameWithoutExtension(pathAndNameOfSetupLog), Path.GetExtension(pathAndNameOfSetupLog));
|
Path.GetFileNameWithoutExtension(pathAndNameOfSetupLog), Path.GetExtension(pathAndNameOfSetupLog));
|
||||||
@@ -148,6 +137,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
swSetupLog.Write(str);
|
swSetupLog.Write(str);
|
||||||
|
swSetupLog.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,6 +154,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
swSetupLog.Write(str);
|
swSetupLog.Write(str);
|
||||||
|
swSetupLog.Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
return FormControlsManipThreadSafe.getRichTextBoxLastLineIndex(statusRtxtbox);
|
return FormControlsManipThreadSafe.getRichTextBoxLastLineIndex(statusRtxtbox);
|
||||||
@@ -177,6 +168,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
str = Regex.Replace(str, @"\n", "\r\n", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
swSetupLog.Write(str);
|
swSetupLog.Write(str);
|
||||||
|
swSetupLog.Flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,7 +319,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
currentSetupStep < (int)Properties.Settings.Default["CurrentSetupStep"])
|
currentSetupStep < (int)Properties.Settings.Default["CurrentSetupStep"])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( getActualSetupStep(entry[0], ref actualSetupstep) )
|
if (getActualSetupStep(entry[0], ref actualSetupstep))
|
||||||
{
|
{
|
||||||
setupSuccessful = setupStepCalls[actualSetupstep].Invoke(entry[1]);
|
setupSuccessful = setupStepCalls[actualSetupstep].Invoke(entry[1]);
|
||||||
|
|
||||||
@@ -542,7 +534,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
indentation = Common.getIndentation(1);
|
indentation = Common.getIndentation(1);
|
||||||
msg = "\n" + indentation + "- FAILED. "
|
msg = "\n" + indentation + "- FAILED. "
|
||||||
+ "\n" + indentation + "File: " + ConfigFileManager.ms_configGeneralInfo.pathAndNameOfConfigFile
|
+ "\n" + indentation + "File: " + ConfigFileManager.ms_configGeneralInfo.pathAndNameOfConfigFile
|
||||||
+ "\n" + indentation + "Error Description: The section " + SectionName.Setup_Step_Manager + " doesn't exist or have no entries.";
|
+ "\n" + indentation + "Error Description: The section " + SectionName.Setup_Step_Manager + " doesn't exist or have no entries.";
|
||||||
|
|
||||||
Common.formatConfigIniFailureMessage(msg, textPropList);
|
Common.formatConfigIniFailureMessage(msg, textPropList);
|
||||||
|
|
||||||
@@ -645,7 +637,7 @@ namespace All_Purpose_Auto_Setup
|
|||||||
List<CommonLib.Windows.Forms.TextFormat.TextFontAndColor> textPropList = new List<CommonLib.Windows.Forms.TextFormat.TextFontAndColor>();
|
List<CommonLib.Windows.Forms.TextFormat.TextFontAndColor> textPropList = new List<CommonLib.Windows.Forms.TextFormat.TextFontAndColor>();
|
||||||
|
|
||||||
string msg;
|
string msg;
|
||||||
|
|
||||||
if (ConfigFileManager.ms_configGeneralInfo.programName.iniValue.Length > 0)
|
if (ConfigFileManager.ms_configGeneralInfo.programName.iniValue.Length > 0)
|
||||||
{
|
{
|
||||||
// set font to default text and color
|
// set font to default text and color
|
||||||
|
|||||||
@@ -1,15 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using System.Threading;
|
|
||||||
|
|
||||||
using CommonLib.Windows.Forms;
|
using CommonLib.Windows.Forms;
|
||||||
|
|
||||||
namespace All_Purpose_Auto_Setup
|
namespace All_Purpose_Auto_Setup
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user