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 | 20 | <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> |
21 | 21 | <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" /> |
22 | 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 | 27 | </assemblyBinding> |
24 | 28 | </runtime> |
25 | 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 | 32 | </system.web> |
29 | 33 | <entityFramework> |
30 | 34 | <providers> | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - ColorConsole.cs
... | ... | @@ -100,24 +100,39 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS |
100 | 100 | /// <param name="b"></param> |
101 | 101 | /// <param name="bracket"></param> |
102 | 102 | /// <param name="prefix"></param> |
103 | + /// <param name="validitylist"></param> | |
104 | + /// <param name="exitvalue"></param> | |
103 | 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 | 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 | 138 | /// <summary> | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/ConsoleFunction - Tools.cs
... | ... | @@ -17,6 +17,7 @@ using Vrh.XmlProcessing; |
17 | 17 | using System.Xml.Linq; |
18 | 18 | using Vrh.Log4Pro.MaintenanceConsole.ColorConsoleNS; |
19 | 19 | using VRH.Common; |
20 | +using Microsoft.Win32; | |
20 | 21 | |
21 | 22 | namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
22 | 23 | { |
... | ... | @@ -209,5 +210,27 @@ namespace Vrh.Log4Pro.MaintenanceConsole.ToolsNS |
209 | 210 | Process.Start(startinfo); |
210 | 211 | } |
211 | 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 | 9 | using System.Threading.Tasks; |
10 | 10 | |
11 | 11 | using Microsoft.Web.Administration; |
12 | -using System.Management; | |
13 | 12 | using System.Diagnostics; |
14 | 13 | |
15 | 14 | using Vrh.Log4Pro.MaintenanceConsole.MenuNS; |
... | ... | @@ -22,6 +21,7 @@ using Vrh.Log4Pro.MaintenanceConsole.WebApplicationManagerNS; |
22 | 21 | using Vrh.XmlProcessing; |
23 | 22 | using System.Xml.Linq; |
24 | 23 | using System.Text.RegularExpressions; |
24 | +using System.Collections.ObjectModel; | |
25 | 25 | |
26 | 26 | namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS |
27 | 27 | { |
... | ... | @@ -58,12 +58,24 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS |
58 | 58 | var config = (parameter as Menu.ExecutorParameter).GetConfig<InstallManagerXmlParser>(); |
59 | 59 | InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp; |
60 | 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 | 76 | grp = wfg.Group; |
65 | 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 | 79 | if (answer.ToUpper() == "Y") { EnableWindowsFeatures(grp, os, config); } |
68 | 80 | }; |
69 | 81 | return o; |
... | ... | @@ -71,7 +83,7 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS |
71 | 83 | private static void EnableWindowsFeatures(InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.Group.Values grp |
72 | 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 | 87 | foreach (var fn in environmentinstallconfig.GetFeatureList(os,grp)) |
76 | 88 | { |
77 | 89 | if (string.IsNullOrWhiteSpace(fn) || fn.StartsWith("#")) { continue; } |
... | ... | @@ -80,7 +92,10 @@ namespace Vrh.Log4Pro.MaintenanceConsole.InstallManagerNS |
80 | 92 | switch (os) |
81 | 93 | { |
82 | 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 | 99 | break; |
85 | 100 | case InstallManagerXmlParser.XmlStructure.EnvironmentInstall.WindowsFeatureList.Attributes.OS.Values.W7: |
86 | 101 | response = Tools.ExecuteAndGetStdIo("dism", $"/online /Enable-Feature /FeatureName:{fn}"); | ... | ... |
Vrh.Log4Pro.MaintenanceConsole/Program.cs
... | ... | @@ -134,9 +134,12 @@ namespace Vrh.Log4Pro.MaintenanceConsole |
134 | 134 | ColorConsole.Write(System.Environment.OSVersion.ServicePack, ConsoleColor.Yellow, bracket: "[]", prefix: "Service pack:", suffix: ","); |
135 | 135 | ColorConsole.Write(System.Environment.OSVersion.VersionString, ConsoleColor.Yellow, bracket: "[]", prefix: "Version string:"); |
136 | 136 | ColorConsole.WriteLine(""); |
137 | + ColorConsole.Write(Tools.OSFriendlyName(), ConsoleColor.Yellow, bracket: "[]", prefix: " Friendly name:"); | |
138 | + ColorConsole.WriteLine(""); | |
137 | 139 | ColorConsole.WriteLine(""); |
138 | 140 | } |
139 | 141 | } |
142 | + | |
140 | 143 | #region MaintenanceConsoleXmlProcessor class |
141 | 144 | public class MaintenanceConsoleXmlProcessor : XmlParser |
142 | 145 | { | ... | ... |
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.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 | 215 | <Reference Include="System.IO.FileSystem.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> |
216 | 216 | <HintPath>..\packages\System.IO.FileSystem.Primitives.4.0.1\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath> |
217 | 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 | 223 | <Reference Include="System.Management" /> |
219 | 224 | <Reference Include="System.Messaging" /> |
220 | 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 | 39 | <package id="System.IO.FileSystem" version="4.0.1" targetFramework="net462" /> |
40 | 40 | <package id="System.IO.FileSystem.Primitives" version="4.0.1" targetFramework="net462" /> |
41 | 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 | 43 | <package id="System.Management" version="5.0.0" targetFramework="net462" /> |
44 | 44 | <package id="System.Net.Http" version="4.1.0" targetFramework="net462" /> |
45 | 45 | <package id="System.Net.Primitives" version="4.0.11" targetFramework="net462" /> | ... | ... |