Commit cac3ec8fabc3be233138ede5b7d232a32235f8cb
1 parent
0cafa26d
v1.1.0
- Environmentinstall finomítása
Showing
8 changed files
with
87 additions
and
22 deletions
Show diff stats
Vrh.Log4Pro.MaintenanceConsole/App.config
| @@ -20,11 +20,15 @@ | @@ -20,11 +20,15 @@ | ||
| 20 | <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> | 20 | <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> |
| 21 | <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> | 21 | <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> |
| 22 | </dependentAssembly> | 22 | </dependentAssembly> |
| 23 | + <dependentAssembly> | ||
| 24 | + <assemblyIdentity name="System.Security.Principal.Windows" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | ||
| 25 | + <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> | ||
| 26 | + </dependentAssembly> | ||
| 23 | </assemblyBinding> | 27 | </assemblyBinding> |
| 24 | </runtime> | 28 | </runtime> |
| 25 | <system.web> | 29 | <system.web> |
| 26 | - <membership configSource="system.web.membership.config"/> | ||
| 27 | - <roleManager configSource="system.web.roleManager.config"/> | 30 | + <membership configSource="system.web.membership.config" /> |
| 31 | + <roleManager configSource="system.web.roleManager.config" /> | ||
| 28 | </system.web> | 32 | </system.web> |
| 29 | <entityFramework> | 33 | <entityFramework> |
| 30 | <providers> | 34 | <providers> |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
| @@ -100,24 +100,39 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS | @@ -100,24 +100,39 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS | ||
| 100 | /// <param name="b"></param> | 100 | /// <param name="b"></param> |
| 101 | /// <param name="bracket"></param> | 101 | /// <param name="bracket"></param> |
| 102 | /// <param name="prefix"></param> | 102 | /// <param name="prefix"></param> |
| 103 | + /// <param name="validitylist"></param> | ||
| 104 | + /// <param name="exitvalue"></param> | ||
| 103 | /// <returns></returns> | 105 | /// <returns></returns> |
| 104 | - public static string ReadLine(string text = null, ConsoleColor? f = null, ConsoleColor? b = null, string bracket = null, string prefix = "",string suffix = "") | 106 | + public static string ReadLine(string text = null, ConsoleColor? f = null, ConsoleColor? b = null, string bracket = null, string prefix = "",string suffix = "",List<string> validitylist=null,string exitvalue="EX",string defaultvalue=null) |
| 105 | { | 107 | { |
| 106 | - if (silentMode) | 108 | + string input; |
| 109 | + while (true) | ||
| 107 | { | 110 | { |
| 108 | - if (readlineList == null || readlineList.Length == 0) { return null; } | 111 | + string prompt = text; |
| 112 | + if (silentMode) | ||
| 113 | + { | ||
| 114 | + if (readlineList == null || readlineList.Length == 0) { return null; } | ||
| 115 | + else | ||
| 116 | + { | ||
| 117 | + var nextreadline = readlineList[0]; | ||
| 118 | + readlineList = readlineList.Skip(1).ToArray(); | ||
| 119 | + return nextreadline; | ||
| 120 | + } | ||
| 121 | + } | ||
| 109 | else | 122 | else |
| 110 | { | 123 | { |
| 111 | - var nextreadline = readlineList[0]; | ||
| 112 | - readlineList = readlineList.Skip(1).ToArray(); | ||
| 113 | - return nextreadline; | 124 | + if (validitylist != null && validitylist.Any()) { prompt += $" Valid values are {'\''+string.Join("','", validitylist)+'\''}."; } |
| 125 | + if (defaultvalue != null) { prompt += $" Default value is '{defaultvalue}'."; } | ||
| 126 | + if (exitvalue != null) { prompt += $" Enter EX to exit."; } | ||
| 127 | + | ||
| 128 | + Write(prompt, f, b, bracket, prefix, suffix); | ||
| 129 | + input = Console.ReadLine(); | ||
| 130 | + if (defaultvalue!=null && (input == null || input == "")) { input = defaultvalue; } | ||
| 131 | + if (exitvalue != null && input!=null && input.ToLower() == exitvalue || validitylist ==null || !validitylist.Any() || validitylist.Contains(input)) { break; } | ||
| 132 | + WriteLine($"Erroneous value!",ConsoleColor.Red); | ||
| 114 | } | 133 | } |
| 115 | } | 134 | } |
| 116 | - else | ||
| 117 | - { | ||
| 118 | - Write(text, f, b, bracket, prefix,suffix); | ||
| 119 | - return Console.ReadLine(); | ||
| 120 | - } | 135 | + return input; |
| 121 | } | 136 | } |
| 122 | 137 | ||
| 123 | /// <summary> | 138 | /// <summary> |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
| @@ -17,6 +17,7 @@ using Vrh.XmlProcessing; | @@ -17,6 +17,7 @@ using Vrh.XmlProcessing; | ||
| 17 | using System.Xml.Linq; | 17 | using System.Xml.Linq; |
| 18 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; | 18 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; |
| 19 | using VRH.Common; | 19 | using VRH.Common; |
| 20 | +using Microsoft.Win32; | ||
| 20 | 21 | ||
| 21 | namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | 22 | namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
| 22 | { | 23 | { |
| @@ -209,5 +210,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | @@ -209,5 +210,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS | ||
| 209 | Process.Start(startinfo); | 210 | Process.Start(startinfo); |
| 210 | } | 211 | } |
| 211 | public enum ShutDownMode { Sleep, Hibernation,Lock,Logoff,Restart,ShutDown,} | 212 | public enum ShutDownMode { Sleep, Hibernation,Lock,Logoff,Restart,ShutDown,} |
| 213 | + public static string HKLM_GetString(string path, string key) | ||
| 214 | + { | ||
| 215 | + try | ||
| 216 | + { | ||
| 217 | + RegistryKey rk = Registry.LocalMachine.OpenSubKey(path); | ||
| 218 | + if (rk == null) return ""; | ||
| 219 | + return (string)rk.GetValue(key); | ||
| 220 | + } | ||
| 221 | + catch { return ""; } | ||
| 222 | + } | ||
| 223 | + | ||
| 224 | + public static string OSFriendlyName() | ||
| 225 | + { | ||
| 226 | + string ProductName = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName"); | ||
| 227 | + string CSDVersion = HKLM_GetString(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion"); | ||
| 228 | + if (ProductName != "") | ||
| 229 | + { | ||
| 230 | + return (ProductName.StartsWith("Microsoft") ? "" : "Microsoft ") + ProductName + | ||
| 231 | + (CSDVersion != "" ? " " + CSDVersion : ""); | ||
| 232 | + } | ||
| 233 | + return ""; | ||
| 234 | + } | ||
| 212 | } | 235 | } |
| 213 | } | 236 | } |
Vrh.Log4Pro.MaintenanceConsole/Manager - InstallManager.cs
| @@ -9,7 +9,6 @@ using System.Threading; | @@ -9,7 +9,6 @@ using System.Threading; | ||
| 9 | using System.Threading.Tasks; | 9 | using System.Threading.Tasks; |
| 10 | 10 | ||
| 11 | using Microsoft.Web.Administration; | 11 | using Microsoft.Web.Administration; |
| 12 | -using System.Management; | ||
| 13 | using System.Diagnostics; | 12 | using System.Diagnostics; |
| 14 | 13 | ||
| 15 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; | 14 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; |
| @@ -22,6 +21,7 @@ using Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS; | @@ -22,6 +21,7 @@ using Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS; | ||
| 22 | using Vrh.XmlProcessing; | 21 | using Vrh.XmlProcessing; |
| 23 | using System.Xml.Linq; | 22 | using System.Xml.Linq; |
| 24 | using System.Text.RegularExpressions; | 23 | using System.Text.RegularExpressions; |
| 24 | +using System.Collections.ObjectModel; | ||
| 25 | 25 | ||
| 26 | namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | 26 | namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS |
| 27 | { | 27 | { |
| @@ -58,12 +58,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | @@ -58,12 +58,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | ||
| 58 | var config = (parameter as Menu.ExecutorParameter).GetConfig<InstallManagerXmlParser>(); | 58 | var config = (parameter as Menu.ExecutorParameter).GetConfig<InstallManagerXmlParser>(); |
| 59 | InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp; | 59 | InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp; |
| 60 | InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values os; | 60 | InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values os; |
| 61 | - string answer; | ||
| 62 | - foreach (var wfg in config.WindowsFeatureGroups) | 61 | + |
| 62 | + string osfrn = Tools.OSFriendlyName(); | ||
| 63 | + var defaultvalue = | ||
| 64 | + osfrn.StartsWith("Microsoft Windows 10") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | ||
| 65 | + : osfrn.StartsWith("Microsoft Windows Server 2016") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | ||
| 66 | + : osfrn.StartsWith("Microsoft Windows Server 2012") ? InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016.ToString() | ||
| 67 | + : null; | ||
| 68 | + var oslist = Enum.GetNames(typeof(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values)).ToList(); | ||
| 69 | + string answer = ColorConsole.ReadLine($"Enter os code (friendly name is: '{osfrn}')!", ConsoleColor.Green, validitylist: oslist, defaultvalue: defaultvalue.ToString()); | ||
| 70 | + | ||
| 71 | + InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values? selectedos = null; | ||
| 72 | + selectedos = (InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values)Enum | ||
| 73 | + .Parse(typeof(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values), answer); | ||
| 74 | + foreach (var wfg in config.WindowsFeatureGroups.Where(x=>selectedos==null || x.OS== selectedos)) | ||
| 63 | { | 75 | { |
| 64 | grp = wfg.Group; | 76 | grp = wfg.Group; |
| 65 | os = wfg.OS; | 77 | os = wfg.OS; |
| 66 | - answer = ColorConsole.ReadLine($"Do You want to configure feature group '{grp}' for os '{os}'?(Y/N)", ConsoleColor.Yellow); | 78 | + answer = ColorConsole.ReadLine($"Do You want to configure feature group '{grp}' for os '{os}'?(Y/N)", ConsoleColor.Green); |
| 67 | if (answer.ToUpper() == "Y") { EnableWindowsFeatures(grp, os, config); } | 79 | if (answer.ToUpper() == "Y") { EnableWindowsFeatures(grp, os, config); } |
| 68 | }; | 80 | }; |
| 69 | return o; | 81 | return o; |
| @@ -71,7 +83,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | @@ -71,7 +83,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | ||
| 71 | private static void EnableWindowsFeatures(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp | 83 | private static void EnableWindowsFeatures(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp |
| 72 | , InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values os, InstallManagerXmlParser environmentinstallconfig) | 84 | , InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values os, InstallManagerXmlParser environmentinstallconfig) |
| 73 | { | 85 | { |
| 74 | - ColorConsole.WriteLine($"Enableing {grp} features for os {os}...",ConsoleColor.Yellow); | 86 | + ColorConsole.WriteLine($"Enableing {grp} features for os {os}...",ConsoleColor.Green); |
| 75 | foreach (var fn in environmentinstallconfig.GetFeatureList(os,grp)) | 87 | foreach (var fn in environmentinstallconfig.GetFeatureList(os,grp)) |
| 76 | { | 88 | { |
| 77 | if (string.IsNullOrWhiteSpace(fn) || fn.StartsWith("#")) { continue; } | 89 | if (string.IsNullOrWhiteSpace(fn) || fn.StartsWith("#")) { continue; } |
| @@ -80,7 +92,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | @@ -80,7 +92,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS | ||
| 80 | switch (os) | 92 | switch (os) |
| 81 | { | 93 | { |
| 82 | case InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016: | 94 | case InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.WS2016: |
| 83 | - response = Tools.ExecuteAndGetStdIo("Install-WindowsFeature", $"-Name {fn} -IncludeAllSubFeature -IncludeManagementTools"); | 95 | + |
| 96 | + //var cmd = "Powershell -Command {Import-Module ServerManager ; Install-WindowsFeature XXXX}"; | ||
| 97 | + response = Tools.ExecuteAndGetStdIo("Powershell", $"-Command {{Import - Module ServerManager ; Install-WindowsFeature -Name {fn} -IncludeAllSubFeature -IncludeManagementTools}}"); | ||
| 98 | + //response = Tools.ExecuteAndGetStdIo("Install-WindowsFeature", $"-Name {fn} -IncludeAllSubFeature -IncludeManagementTools"); | ||
| 84 | break; | 99 | break; |
| 85 | case InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.W7: | 100 | case InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.W7: |
| 86 | response = Tools.ExecuteAndGetStdIo("dism", $"/online /Enable-Feature /FeatureName:{fn}"); | 101 | response = Tools.ExecuteAndGetStdIo("dism", $"/online /Enable-Feature /FeatureName:{fn}"); |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
| @@ -134,9 +134,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole | @@ -134,9 +134,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole | ||
| 134 | ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); | 134 | ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); |
| 135 | ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); | 135 | ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); |
| 136 | ColorConsole.WriteLine(""); | 136 | ColorConsole.WriteLine(""); |
| 137 | + ColorConsole.Write(Tools.OSFriendlyName(), ConsoleColor.Yellow, bracket: "[]", prefix: " Friendly name:"); | ||
| 138 | + ColorConsole.WriteLine(""); | ||
| 137 | ColorConsole.WriteLine(""); | 139 | ColorConsole.WriteLine(""); |
| 138 | } | 140 | } |
| 139 | } | 141 | } |
| 142 | + | ||
| 140 | #region MaintenanceConsoleXmlProcessor class | 143 | #region MaintenanceConsoleXmlProcessor class |
| 141 | public class MaintenanceConsoleXmlProcessor : XmlParser | 144 | public class MaintenanceConsoleXmlProcessor : XmlParser |
| 142 | { | 145 | { |
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.0.1.0")] | ||
| 36 | -[assembly: AssemblyFileVersion("1.0.1.0")] | 35 | +[assembly: AssemblyVersion("1.1.0.0")] |
| 36 | +[assembly: AssemblyFileVersion("1.1.0.0")] |
Vrh.Log4Pro.MaintenanceConsole/Vrh.Log4Pro.MaintenanceConsole.csproj
| @@ -215,6 +215,11 @@ | @@ -215,6 +215,11 @@ | ||
| 215 | <Reference Include="System.IO.FileSystem.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | 215 | <Reference Include="System.IO.FileSystem.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> |
| 216 | <HintPath>..\packages\System.IO.FileSystem.Primitives.4.0.1\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath> | 216 | <HintPath>..\packages\System.IO.FileSystem.Primitives.4.0.1\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath> |
| 217 | </Reference> | 217 | </Reference> |
| 218 | + <Reference Include="System.Linq.Expressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
| 219 | + <HintPath>..\packages\System.Linq.Expressions.4.3.0\lib\net463\System.Linq.Expressions.dll</HintPath> | ||
| 220 | + <Private>True</Private> | ||
| 221 | + <Private>True</Private> | ||
| 222 | + </Reference> | ||
| 218 | <Reference Include="System.Management" /> | 223 | <Reference Include="System.Management" /> |
| 219 | <Reference Include="System.Messaging" /> | 224 | <Reference Include="System.Messaging" /> |
| 220 | <Reference Include="System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | 225 | <Reference Include="System.Net.Http, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> |
Vrh.Log4Pro.MaintenanceConsole/packages.config
| @@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
| 39 | <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" /> | 39 | <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" /> |
| 40 | <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" /> | 40 | <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" /> |
| 41 | <package id="System.Linq" version="4.1.0" targetFramework="net462" requireReinstallation="true" /> | 41 | <package id="System.Linq" version="4.1.0" targetFramework="net462" requireReinstallation="true" /> |
| 42 | - <package id="System.Linq.Expressions" version="4.1.0" targetFramework="net462" requireReinstallation="true" /> | 42 | + <package id="System.Linq.Expressions" version="4.3.0" targetFramework="net472" /> |
| 43 | <package id="System.Management" version="5.0.0" targetFramework="net462" /> | 43 | <package id="System.Management" version="5.0.0" targetFramework="net462" /> |
| 44 | <package id="System.Net.Http" version="4.1.0" targetFramework="net462" /> | 44 | <package id="System.Net.Http" version="4.1.0" targetFramework="net462" /> |
| 45 | <package id="System.Net.Primitives" version="4.0.11" targetFramework="net462" /> | 45 | <package id="System.Net.Primitives" version="4.0.11" targetFramework="net462" /> |