Commit ab4d66d6c193c7186f9378c170be6f9809abe3c2

Authored by Schwirg László
1 parent 17723d0c

v1.19.3.0

- windows service display name és description korrekt definiálása a szerviz regisztrációjakor
Vrh.Log4Pro.MaintenanceConsole/Manager - WindowsServiceManager.cs
@@ -504,51 +504,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS @@ -504,51 +504,74 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
504 // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS 504 // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS
505 // 505 //
506 // sc.exe [<servername>] create [<servicename>] 506 // sc.exe [<servername>] create [<servicename>]
507 - // [type= {own | share | kernel | filesys | rec | interact type= {own | share}}]  
508 - // [start= {boot | system | auto | demand | disabled | delayed-auto}]  
509 - // [error= {normal | severe | critical | ignore}]  
510 - // [binpath= <binarypathname>]  
511 - // [group= <loadordergroup>]  
512 - // [tag= {yes | no}]  
513 - // [depend= <dependencies>]  
514 - // [obj= {<accountname> | <objectname>}]  
515 - // [displayname= <displayname>]  
516 - // [password= <password>] 507 + // [type= {own | share | kernel | filesys | rec | interact type= {own | share}}]
  508 + // [start= {boot | system | auto | demand | disabled | delayed-auto}]
  509 + // [error= {normal | severe | critical | ignore}]
  510 + // [binpath= <binarypathname>]
  511 + // [group= <loadordergroup>]
  512 + // [tag= {yes | no}]
  513 + // [depend= <dependencies>]
  514 + // [obj= {<accountname> | <objectname>}]
  515 + // [displayname= <displayname>]
  516 + // [password= <password>]
  517 + // sc description TestService1 "This is the description of the service.."
517 518
518 ProcessStartInfo startInfo = new ProcessStartInfo(); 519 ProcessStartInfo startInfo = new ProcessStartInfo();
519 startInfo.CreateNoWindow = false; 520 startInfo.CreateNoWindow = false;
520 startInfo.UseShellExecute = true; 521 startInfo.UseShellExecute = true;
521 startInfo.FileName = "sc.exe"; 522 startInfo.FileName = "sc.exe";
522 startInfo.WindowStyle = ProcessWindowStyle.Hidden; 523 startInfo.WindowStyle = ProcessWindowStyle.Hidden;
523 - List<string> argumentlist = new List<string>();  
524 - argumentlist.Add($"create"); argumentlist.Add(ws.Name.Quote());  
525 - argumentlist.Add("displayname="); argumentlist.Add(ws.DisplayName.Quote()); 524 +
  525 + try
  526 + {
  527 + startInfo.Arguments = BuildArgumentListCreate(ws, dependencygroupservicenamelist);
  528 + ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments);
  529 + using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); }
  530 +
  531 + startInfo.Arguments = String.Join(" ", BuildArgumentListSetDescription(ws, dependencygroupservicenamelist));
  532 + ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments);
  533 + using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); }
  534 + }
  535 + catch (Exception ex)
  536 + {
  537 + ColorConsole.WriteLine(ex.Message);
  538 + if(ex.InnerException!=null) ColorConsole.WriteLine(ex.InnerException.Message);
  539 + }
  540 + return true;
  541 + }
  542 + private static string BuildArgumentListSetDescription(WindowsService ws, List<string> dependencygroupservicenamelist)
  543 + {
  544 + var argumentlistsetdescription = new List<string>();
  545 + argumentlistsetdescription.Add($"description");
  546 + argumentlistsetdescription.Add(ws.Name.Quote());
  547 + argumentlistsetdescription.Add(ws.Xml_Description.Quote());
  548 + return String.Join(" ", argumentlistsetdescription);
  549 + }
  550 + private static string BuildArgumentListCreate(WindowsService ws, List<string> dependencygroupservicenamelist)
  551 + {
  552 + List<string> argumentlistregister = new List<string>();
  553 + argumentlistregister.Add($"create"); argumentlistregister.Add(ws.Name.Quote());
  554 + argumentlistregister.Add("displayname="); argumentlistregister.Add(ws.Xml_DisplayName.Quote());
526 if (ws.Xml_IdentityType == ServiceAccount.User) 555 if (ws.Xml_IdentityType == ServiceAccount.User)
527 { 556 {
528 - argumentlist.Add($"obj="); argumentlist.Add(ws.Xml_Username.Quote());  
529 - argumentlist.Add("password="); argumentlist.Add(ws.Xml_Password.Quote()); 557 + argumentlistregister.Add($"obj="); argumentlistregister.Add(ws.Xml_Username.Quote());
  558 + argumentlistregister.Add("password="); argumentlistregister.Add(ws.Xml_Password.Quote());
530 } 559 }
531 else 560 else
532 { 561 {
533 - argumentlist.Add($"obj="); argumentlist.Add(ws.Xml_IdentityType.ToString().Quote()); 562 + argumentlistregister.Add($"obj="); argumentlistregister.Add(ws.Xml_IdentityType.ToString().Quote());
534 } 563 }
535 564
536 // dependency csoport feldolgozása 565 // dependency csoport feldolgozása
537 var effectivedependonlist = new List<string>(); 566 var effectivedependonlist = new List<string>();
538 - foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } }  
539 - foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist==null || !dependencygroupservicenamelist.Any() || dependencygroupservicenamelist.Contains("*") || dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } } 567 + foreach (var sn in ws.Xml_Dependon) { if (dependencygroupservicenamelist == null || !dependencygroupservicenamelist.Any() || dependencygroupservicenamelist.Contains("*") || dependencygroupservicenamelist.Contains(sn)) { effectivedependonlist.Add(sn); } }
540 //--------------------------------------- 568 //---------------------------------------
541 569
542 var dependonparameter = String.Join("/", effectivedependonlist); 570 var dependonparameter = String.Join("/", effectivedependonlist);
543 - argumentlist.Add($"depend="); argumentlist.Add(dependonparameter.Quote()); 571 + argumentlistregister.Add($"depend="); argumentlistregister.Add(dependonparameter.Quote());
544 572
545 - var startparameter =  
546 - ws.Xml_StartMode == ServiceStartMode.Automatic ? "auto"  
547 - : ws.Xml_StartMode == ServiceStartMode.Manual ? "demand"  
548 - : ws.Xml_StartMode == ServiceStartMode.Disabled ? "disabled"  
549 - : ws.Xml_StartMode == ServiceStartMode.Boot ? "boot"  
550 - : "system";  
551 - argumentlist.Add($"start="); argumentlist.Add(startparameter.Quote()); 573 + var startparameter = WindowsService.ServiceStartModeToString(ws.Xml_StartMode);
  574 + argumentlistregister.Add($"start="); argumentlistregister.Add(startparameter.Quote());
552 575
553 var registerarguments = ""; 576 var registerarguments = "";
554 switch (ws.Xml_RegistrationMode) 577 switch (ws.Xml_RegistrationMode)
@@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS @@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
572 break; 595 break;
573 } 596 }
574 var binpathparameter = Path.Combine(ws.Xml_InstallDir, ws.Xml_Exe).Quote() + " " + registerarguments; 597 var binpathparameter = Path.Combine(ws.Xml_InstallDir, ws.Xml_Exe).Quote() + " " + registerarguments;
575 - argumentlist.Add($"binpath="); argumentlist.Add(binpathparameter.Quote());  
576 -  
577 - startInfo.Arguments = String.Join(" ", argumentlist);  
578 -  
579 - ColorConsole.WriteLine(startInfo.FileName + " " + startInfo.Arguments);  
580 - try  
581 - {  
582 - using (Process exeProcess = Process.Start(startInfo)) { exeProcess.WaitForExit(); }  
583 - }  
584 - catch  
585 - {  
586 - // Log error.  
587 - }  
588 - return true; 598 + argumentlistregister.Add($"binpath="); argumentlistregister.Add(binpathparameter.Quote());
  599 + return String.Join(" ", argumentlistregister);
589 } 600 }
590 #endregion Register 601 #endregion Register
591 602
@@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS @@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
886 this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList(); 897 this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList();
887 try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; } 898 try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; }
888 this.PathName = (string)wmiService[nameof(WindowsService.PathName)]; if (this.PathName == null) { this.PathName = ""; } 899 this.PathName = (string)wmiService[nameof(WindowsService.PathName)]; if (this.PathName == null) { this.PathName = ""; }
889 - var sm = (string)wmiService[nameof(WindowsService.StartMode)];  
890 - this.StartMode =  
891 - sm == "Auto" ? ServiceStartMode.Automatic  
892 - : sm == "Auto" ? ServiceStartMode.Manual  
893 - : sm == "Auto" ? ServiceStartMode.Disabled  
894 - : sm == "Auto" ? ServiceStartMode.Boot  
895 - : sm == "Auto" ? ServiceStartMode.System  
896 - : ServiceStartMode.Manual; 900 + var sm = ((string)wmiService[nameof(WindowsService.StartMode)]).ToLower();
  901 + this.StartMode = StringToServiceStartMode(sm);
897 this.State = (string)wmiService[nameof(WindowsService.State)]; 902 this.State = (string)wmiService[nameof(WindowsService.State)];
898 this.Status = (string)wmiService[nameof(WindowsService.Status)]; 903 this.Status = (string)wmiService[nameof(WindowsService.Status)];
899 this.StartName = (string)wmiService[nameof(WindowsService.StartName)]; 904 this.StartName = (string)wmiService[nameof(WindowsService.StartName)];
@@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS @@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
911 } 916 }
912 #endregion public CollectWindowsServiceInfo 917 #endregion public CollectWindowsServiceInfo
913 918
  919 + public static string ServiceStartModeToString(ServiceStartMode sm)
  920 + {
  921 + return
  922 + sm == ServiceStartMode.Automatic ? "auto"
  923 + : sm == ServiceStartMode.Manual ? "demand"
  924 + : sm == ServiceStartMode.Disabled ? "disabled"
  925 + : sm == ServiceStartMode.Boot ? "boot"
  926 + : sm == ServiceStartMode.System ? "system"
  927 + : "system";
  928 + }
  929 + public static ServiceStartMode StringToServiceStartMode(string sm)
  930 + {
  931 + return
  932 + sm == "auto" ? ServiceStartMode.Automatic
  933 + : sm == "disabled" ? ServiceStartMode.Disabled
  934 + : sm == "boot" ? ServiceStartMode.Boot
  935 + : sm == "system" ? ServiceStartMode.System
  936 + : sm == "demand" ? ServiceStartMode.Manual
  937 + : ServiceStartMode.Manual;
  938 + }
  939 +
914 #endregion xml constructor 940 #endregion xml constructor
915 #region cloner constructor 941 #region cloner constructor
916 public WindowsService(WindowsService ws) 942 public WindowsService(WindowsService ws)
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices; @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 // You can specify all the values or you can default the Build and Revision Numbers 32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below: 33 // by using the '*' as shown below:
34 // [assembly: AssemblyVersion("1.0.*")] 34 // [assembly: AssemblyVersion("1.0.*")]
35 -[assembly: AssemblyVersion("1.19.2.0")]  
36 -[assembly: AssemblyFileVersion("1.19.2.0")] 35 +[assembly: AssemblyVersion("1.19.3.0")]
  36 +[assembly: AssemblyFileVersion("1.19.3.0")]