WSP Installer checks updated for IIS 8, Windows 2012 and ASP.NET 4.0

This commit is contained in:
Feodor 2012-09-03 15:35:47 -07:00
parent cf75c359eb
commit e94cfe87c1
4 changed files with 56 additions and 40 deletions

View file

@ -9,7 +9,7 @@
<!-- Studio settings --> <!-- Studio settings -->
<settings> <settings>
<add key="Log.FileName" value="WebsitePanel.Installer.log" /> <add key="Log.FileName" value="WebsitePanel.Installer.log" />
<add key="Web.Service" value="" /> <add key="Web.Service" value="http://www.websitepanel.net/Services/InstallerService-Beta.asmx" />
<add key="Web.AutoCheck" value="False" /> <add key="Web.AutoCheck" value="False" />
<add key="Web.Proxy.UseProxy" value="false" /> <add key="Web.Proxy.UseProxy" value="false" />
<add key="Web.Proxy.Address" value="" /> <add key="Web.Proxy.Address" value="" />

View file

@ -282,7 +282,11 @@ namespace WebsitePanel.Setup
WindowsXP, WindowsXP,
WindowsServer2003, WindowsServer2003,
WindowsVista, WindowsVista,
WindowsServer2008 WindowsServer2008,
Windows7,
WindowsServer2008R2,
Windows8,
WindowsServer2012
} }
public static string GetName(WindowsVersion version) public static string GetName(WindowsVersion version)
@ -404,11 +408,28 @@ namespace WebsitePanel.Setup
} }
break; break;
case 6: case 6:
if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION) switch (osInfo.Version.Minor)
ret = WindowsVersion.WindowsVista; {
else case 0:
ret = WindowsVersion.WindowsServer2008; if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION)
break; ret = WindowsVersion.WindowsVista;
else
ret = WindowsVersion.WindowsServer2008;
break;
case 1:
if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION)
ret = WindowsVersion.Windows7;
else
ret = WindowsVersion.WindowsServer2008R2;
break;
case 2:
if (info.wProductType == (byte)WinPlatform.VER_NT_WORKSTATION)
ret = WindowsVersion.Windows8;
else
ret = WindowsVersion.WindowsServer2012;
break;
}
break;
} }
break; break;
} }

View file

@ -590,16 +590,8 @@ namespace WebsitePanel.Setup
public static bool CheckAspNet40Registered(SetupVariables setupVariables) public static bool CheckAspNet40Registered(SetupVariables setupVariables)
{ {
// var regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\ASP.NET\\4.0.30319.0");
var aspNet40Registered = false; return (regkey != null);
// Run ASP.NET Registration Tool command
var psOutput = ExecAspNetRegistrationToolCommand(setupVariables, "-lv");
// Split process output per lines
var strLines = psOutput.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
// Lookup for an evidence of ASP.NET 4.0
aspNet40Registered = strLines.Any((string s) => { return s.Contains("4.0.30319.0"); });
//
return aspNet40Registered;
} }
public static string ExecAspNetRegistrationToolCommand(SetupVariables setupVariables, string arguments) public static string ExecAspNetRegistrationToolCommand(SetupVariables setupVariables, string arguments)

View file

@ -40,6 +40,7 @@ using WebsitePanel.Setup.Web;
using System.IO; using System.IO;
using System.Management; using System.Management;
using WebsitePanel.Setup.Actions; using WebsitePanel.Setup.Actions;
using Microsoft.Win32;
namespace WebsitePanel.Setup namespace WebsitePanel.Setup
{ {
@ -233,9 +234,14 @@ namespace WebsitePanel.Setup
Log.WriteInfo(string.Format("OS check: {0}", details)); Log.WriteInfo(string.Format("OS check: {0}", details));
if (!(version == OS.WindowsVersion.WindowsServer2003 || if (!(version == OS.WindowsVersion.WindowsServer2003 ||
version == OS.WindowsVersion.WindowsServer2008)) version == OS.WindowsVersion.WindowsServer2008 ||
version == OS.WindowsVersion.WindowsServer2008R2 ||
version == OS.WindowsVersion.WindowsServer2012 ||
version == OS.WindowsVersion.WindowsVista ||
version == OS.WindowsVersion.Windows7 ||
version == OS.WindowsVersion.Windows8 ))
{ {
details = "Windows Server 2003 or Windows Server 2008 required."; details = "OS required: Windows Server 2008/2008 R2/2012 or Windows Vista/7/8.";
Log.WriteError(string.Format("OS check: {0}", details), null); Log.WriteError(string.Format("OS check: {0}", details), null);
#if DEBUG #if DEBUG
return CheckStatuses.Warning; return CheckStatuses.Warning;
@ -318,12 +324,12 @@ namespace WebsitePanel.Setup
Log.WriteInfo(string.Format("ASP.NET check: {0}", details)); Log.WriteInfo(string.Format("ASP.NET check: {0}", details));
return CheckStatuses.Error; return CheckStatuses.Error;
} }
if (!IsAspNetRoleServiceInstalled()) if (!IsAspNetRoleServiceInstalled())
{ {
details = "ASP.NET role service is not installed on your server. Run Server Manager to add ASP.NET role service."; details = "ASP.NET role service is not installed on your server. Run Server Manager to add ASP.NET role service.";
Log.WriteInfo(string.Format("ASP.NET check: {0}", details)); Log.WriteInfo(string.Format("ASP.NET check: {0}", details));
return CheckStatuses.Error; return CheckStatuses.Error;
} }
// Register ASP.NET 4.0 // Register ASP.NET 4.0
if (Utils.CheckAspNet40Registered(SetupVariables) == false) if (Utils.CheckAspNet40Registered(SetupVariables) == false)
{ {
@ -584,25 +590,22 @@ namespace WebsitePanel.Setup
private static bool IsWebServerRoleInstalled() private static bool IsWebServerRoleInstalled()
{ {
WmiHelper wmi = new WmiHelper("root\\cimv2"); RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\InetStp");
using (ManagementObjectCollection roles = wmi.ExecuteQuery("SELECT NAME FROM Win32_ServerFeature WHERE ID=2")) if (regkey == null)
{ return false;
return (roles.Count > 0);
} int value = (int)regkey.GetValue("MajorVersion", 0);
return value == 7 || value == 8;
} }
private static bool IsAspNetRoleServiceInstalled() private static bool IsAspNetRoleServiceInstalled()
{ {
WmiHelper wmi = new WmiHelper("root\\cimv2"); RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\InetStp\\Components");
using (ManagementObjectCollection roles = wmi.ExecuteQuery("SELECT NAME FROM Win32_ServerFeature WHERE ID=148")) if (regkey == null)
{ return false;
return (roles.Count > 0);
} int value = (int)regkey.GetValue("ASPNET", 0);
return value == 1;
} }
} }
} }