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 504 // sc.exe create NewService binpath= c:\windows\system32\NewServ.exe type= share start= auto depend= +TDI NetBIOS
505 505 //
506 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 519 ProcessStartInfo startInfo = new ProcessStartInfo();
519 520 startInfo.CreateNoWindow = false;
520 521 startInfo.UseShellExecute = true;
521 522 startInfo.FileName = "sc.exe";
522 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 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 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 565 // dependency csoport feldolgozása
537 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 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 576 var registerarguments = "";
554 577 switch (ws.Xml_RegistrationMode)
... ... @@ -572,20 +595,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
572 595 break;
573 596 }
574 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 601 #endregion Register
591 602  
... ... @@ -886,14 +897,8 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
886 897 this.ServicesDependOnThis = service.DependentServices.Select(s => s.ServiceName).ToList();
887 898 try { this.ThisDependsOn = service.ServicesDependedOn.Select(s => s.ServiceName).ToList(); } catch { this.ThisDependsOn = new List<string>() { "???" }; }
888 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 902 this.State = (string)wmiService[nameof(WindowsService.State)];
898 903 this.Status = (string)wmiService[nameof(WindowsService.Status)];
899 904 this.StartName = (string)wmiService[nameof(WindowsService.StartName)];
... ... @@ -911,6 +916,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.WindowsServiceManagerNS
911 916 }
912 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 940 #endregion xml constructor
915 941 #region cloner constructor
916 942 public WindowsService(WindowsService ws)
... ...
Vrh.Log4Pro.MaintenanceConsole/Properties/AssemblyInfo.cs
... ... @@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
32 32 // You can specify all the values or you can default the Build and Revision Numbers
33 33 // by using the '*' as shown below:
34 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")]
... ...