diff --git a/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs index a451012d..b0110204 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/WindowsServer.asmx.cs @@ -360,20 +360,50 @@ namespace WebsitePanel.Server { foreach (WPIProduct product in products) { - string installedHostingPackageVersion = GetInstalledHostingPackageVersion(product.ProductId); - if (!string.IsNullOrEmpty(installedHostingPackageVersion) && string.Compare(product.Version, installedHostingPackageVersion, StringComparison.OrdinalIgnoreCase) > 0) - { - product.IsUpgrade = true; - } + string hostingPackageName = product.ProductId; + CheckProductForUpdate(hostingPackageName, product); } } - private string GetInstalledHostingPackageVersion(string productId) + private void CheckProductForUpdate(string hostingPackageName, WPIProduct product) { - string installedVersion = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Helicon\\Zoo", productId+"Version", string.Empty) as string; + string installedHostingPackageVersion = GetInstalledHostingPackageVersion(hostingPackageName); + if (!string.IsNullOrEmpty(installedHostingPackageVersion)) + { + //6 + //3.0.90.383 + if (CompareVersions(product.Version, installedHostingPackageVersion) > 0) + { + product.IsUpgrade = true; + product.IsInstalled = false; + } + + } + } + + private decimal CompareVersions(string newVersion, string oldVersion) + { + try + { + var version1 = new Version(newVersion); + var version2 = new Version(oldVersion); + + return version1.CompareTo(version2); + + } + catch (ArgumentException) + { + return String.Compare(newVersion,oldVersion, StringComparison.Ordinal); + + } + } + + private string GetInstalledHostingPackageVersion(string hostingPackageName) + { + string installedVersion = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Helicon\\Zoo", hostingPackageName + "Version", string.Empty) as string; if (string.IsNullOrEmpty(installedVersion)) { - installedVersion = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Helicon\\Zoo", productId + "Version", string.Empty) as string; + installedVersion = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Helicon\\Zoo", hostingPackageName + "Version", string.Empty) as string; } return installedVersion; @@ -491,6 +521,12 @@ namespace WebsitePanel.Server Product product = wpi.GetWPIProductById(productdId); WPIProduct wpiProduct = ProductToWPIProduct(product); + if (wpiProduct.ProductId == "HeliconZooModule") + { + /*null string = HeliconZooModule in registry*/ + CheckProductForUpdate("", wpiProduct); + } + Log.WriteEnd("GetWPIProductById"); return wpiProduct; } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HeliconZoo_Settings.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HeliconZoo_Settings.ascx.cs index 911eb360..42a3c7e8 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HeliconZoo_Settings.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ProviderControls/HeliconZoo_Settings.ascx.cs @@ -68,7 +68,7 @@ public partial class HeliconZoo_Settings : WebsitePanelControlBase, IHostingServ private void BindHostingPackages() { - // TODO: try...catch? + WPIProduct[] products = null; try { @@ -92,6 +92,12 @@ public partial class HeliconZoo_Settings : WebsitePanelControlBase, IHostingServ private void BindEngines() { + WPIProduct zooModule = ES.Services.Servers.GetWPIProductById(PanelRequest.ServerId, "HeliconZooModule"); + if (!zooModule.IsInstalled || zooModule.IsUpgrade) + { + HostModule.ShowWarningMessage("Zoo Module is not installed or out-of-date. To proceed press 'Add' or 'Update' next to Helicon Zoo Module below, then press 'Install'."); + } + // get all engines from IIS HeliconZooEngine[] engineList = ES.Services.HeliconZoo.GetEngines(PanelRequest.ServiceId); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconZooControl.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconZooControl.ascx.cs index edb20258..3e9dd203 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconZooControl.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebSitesHeliconZooControl.ascx.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Drawing; using System.Globalization; using System.Linq; using System.Web; @@ -32,7 +33,19 @@ namespace WebsitePanel.Portal ViewState["WebSitePackageId"] = site.PackageId; BindEngines(site); - BindInstalledApplications(); + try + { + BindInstalledApplications(); + } + catch (Exception ex) + { + lblConsole.Text = "Zoo Module is not installed. Please ask your system administrator to install Zoo on the server to Configuration\\Server\\Web Application Engines."; + lblConsole.ForeColor = Color.Red; + lblConsole.Font.Size = 16; + + return; // Exit + } + BindApplications(); } @@ -77,17 +90,27 @@ namespace WebsitePanel.Portal private void BindInstalledApplications() { + ViewState["IsZooEnabled"] = false; + var installedApplications = ES.Services.WebServers.GetZooApplications(PanelRequest.ItemID); + ViewState["IsZooEnabled"] = true; + if ((bool) ViewState["IsZooWebConsoleEnabled"]) { - gvInstalledApplications.DataSource = ES.Services.WebServers.GetZooApplications(PanelRequest.ItemID); + gvInstalledApplications.DataSource = installedApplications; gvInstalledApplications.DataBind(); + + } else { - gvInstalledApplications.Visible = false; - lblConsole.Visible = false; + HideInstalledApplications(); } + } + private void HideInstalledApplications() + { + gvInstalledApplications.Visible = false; + lblConsole.Visible = false; } private void BindApplications() @@ -164,6 +187,11 @@ namespace WebsitePanel.Portal private void UpdatedAllowedEngines() { + if (!(bool) ViewState["IsZooEnabled"]) + { + return; // exit; + } + List allowedEngines = (List)ViewState["AllowedEngines"]; string[] enabledEngineNames = (string[])ViewState["EnabledEnginesNames"];