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:
Duc
2025-05-07 09:38:11 -07:00
parent 738834be94
commit c9315968da
14 changed files with 1451 additions and 1561 deletions

View File

@@ -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
{ {

View File

@@ -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.";

View File

@@ -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

View File

@@ -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);

View File

@@ -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]));

View File

@@ -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

View File

@@ -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)
{ {

View File

@@ -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);
} }

View File

@@ -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))

View File

@@ -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

View File

@@ -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)
{ {

View File

@@ -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

View File

@@ -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
{ {