public void AddProductSettings(ProductSettings prodSettings) { if (prodSettings.IsOptional) { productSettings.Add(prodSettings); } }
internal int Activate() { int pkgStartedCount = 0; List <ProductSettings> productsSettings = ConfigParser.GetConfig().GetProductsSettings(); foreach (KeyValuePair <string, InstallationPackage> pkg in packageDictionary) { if (pkg.Value.InstallationState == InstallationPackage.State.Init || pkg.Value.InstallationState == InstallationPackage.State.Error) { ProductSettings prodSettings = productsSettings.FirstOrDefault(prod => prod.Name == pkg.Key); if (!string.IsNullOrEmpty(prodSettings.Name)) { pkg.Value.SetDownloadInfo(prodSettings); pkg.Value.SetExtractInfo(prodSettings.ExtractPath, prodSettings.IsExtractable); string extraParams = ConfigParser.GetConfig().GetConfigValue("EXTRA_PARAMS"); prodSettings.RunParams += string.IsNullOrEmpty(extraParams) ? string.Empty : (" " + extraParams); pkg.Value.SetRunInfo(prodSettings.RunPath, prodSettings.RunParams, prodSettings.MsiTimeoutMS, prodSettings.RunWithBits); pkgStartedCount += (pkg.Value.Activate()) ? 1 : 0; } } } isActivated = true; return(pkgStartedCount); }
internal void SetProductsSettings(List <ProductSettings> productsSettings) { int maxOptionalProducts = ConfigParser.GetConfig().GetIntValue("//RemoteConfiguration/FlowSettings/MaxProducts", int.MaxValue); maxOptionalProducts = maxOptionalProducts == -1 ? int.MaxValue : maxOptionalProducts; int optionalProducts = 0; foreach (ProductSettings prodSettings in productsSettings) { if (packageDictionary.ContainsKey(prodSettings.Name)) { continue; } if (prodSettings.IsOptional && (optionalProducts >= maxOptionalProducts)) { #if DEBUG Logger.GetLogger().Info($"[{prodSettings.Name}] product will not be shown since the limit of optional products to show is: {maxOptionalProducts}"); #endif continue; } if ((prodSettings.PreInstall.RequirementList != null) && (prodSettings.PreInstall.RequirementsList != null)) { RequirementHandlers reqHandlers = new RequirementHandlers(); #if DEBUG Logger.GetLogger().Info("[" + prodSettings.Name + "] Checking requirements for product:"); #endif ProductSettings tmpProdSettings = prodSettings; bool res = default; if (productClasses.Contains(tmpProdSettings.Class)) { res = false; #if DEBUG Logger.GetLogger().Info($"Class ({tmpProdSettings.Class}) <Exists> [{string.Join(", ", productClasses)}] => False"); #endif tmpProdSettings.PreInstall.UnfulfilledRequirementType = "Class"; } else { res = reqHandlers.HandlersResult(ref tmpProdSettings.PreInstall); } if (!res) { OnDiscardPackage(null, tmpProdSettings); continue; } } if (!string.IsNullOrEmpty(prodSettings.Class)) { productClasses.Add(prodSettings.Class); } if (prodSettings.IsOptional) { optionalProducts++; } InstallationPackage pkg = CreatePackage(prodSettings.Behavior, prodSettings.Name); productLayoutManager.AddProductSettings(prodSettings); OnCreatePackage(pkg, prodSettings); } }
public ProductSettings ExtractProductSettings(XmlNode productSettingsNode) { #if DEBUG Logger.GetLogger().Info("Read config file - Product Settings:", Logger.Level.MEDIUM_DEBUG_LEVEL); #endif var productSettings = new ProductSettings { IsOptional = XmlParser.GetBoolAttribute(productSettingsNode, "optional"), IsExtractable = XmlParser.GetBoolAttribute(productSettingsNode, "extractable", true) }; XmlNode productStaticData = productSettingsNode.SelectSingleNode("StaticData"); XmlNode productDynamicData = productSettingsNode.SelectSingleNode("DynamicData"); productSettings.Name = XmlParser.GetStringValue(productStaticData, "Title"); if (productSettings.IsOptional) { productSettings.Name = "sec:" + XmlParser.GetStringValue(productDynamicData, "InternalName"); } productSettings.Skin = XmlParser.GetStringValue(productDynamicData, "Skin"); productSettings.Class = XmlParser.GetStringValue(productDynamicData, "Class"); EvalCustomVariables(productStaticData.SelectSingleNode("CustomData/CustomVars")); productSettings.Filename = XmlParser.GetStringValue(productStaticData, "Filename"); productSettings.ExtractPath = XmlParser.GetStringValue(productStaticData, "ExtractPath"); productSettings.RunPath = XmlParser.GetStringValue(productStaticData, "RunPath"); productSettings.DownloadURLs = new List <ProductSettings.DownloadURL>(); foreach (XmlNode DownloadURLNode in productStaticData.SelectNodes("DownloadURLs/DownloadURL")) { ProductSettings.DownloadURL downloadURL = new ProductSettings.DownloadURL { Arch = XmlParser.GetStringAttribute(DownloadURLNode, "arch").Trim(), URL = XmlParser.GetStringValue(DownloadURLNode).Trim() }; productSettings.DownloadURLs.Add(downloadURL); } bool runWithBitsDefault = XmlParser.GetBoolValue(xmlDoc.SelectSingleNode("//Config"), ConfigConsts.RUN_WITH_BITS, true); foreach (XmlNode productLogicNode in productStaticData.SelectNodes("Logic")) { productSettings.Behavior = XmlParser.GetStringValue(productLogicNode, "Behavior"); productSettings.RunWithBits = XmlParser.GetBoolValue(productLogicNode, "RunWithBits", runWithBitsDefault); productSettings.DownloadMethod = XmlParser.GetStringValue(productLogicNode, "DownloadMethod"); if (String.IsNullOrEmpty(productSettings.DownloadMethod)) { productSettings.DownloadMethod = GetConfigValue("DOWNLOAD_METHOD"); } productSettings.SecondaryDownloadMethod = XmlParser.GetStringValue(productLogicNode, "SecondaryDownloadMethod"); if (String.IsNullOrEmpty(productSettings.SecondaryDownloadMethod)) { productSettings.SecondaryDownloadMethod = GetConfigValue("SECONDARY_DOWNLOAD_METHOD"); } productSettings.MsiTimeoutMS = XmlParser.GetIntValue(productLogicNode, "MsiTimeoutMs"); productSettings.ProductEvents = new List <ProductSettings.ProductEvent>(); foreach (XmlNode EventNode in productLogicNode.SelectNodes("Events/Event")) { ProductSettings.ProductEvent productEvent = new ProductSettings.ProductEvent { Type = XmlParser.GetStringValue(EventNode), Triger = XmlParser.GetStringAttribute(EventNode, "reportOn") }; productSettings.ProductEvents.Add(productEvent); } } productSettings.RunParams = ""; foreach (XmlNode runParamsNode in productStaticData.SelectNodes("RunParams/RunParam")) { string RunParam = XmlParser.GetStringValue(runParamsNode).Trim(); productSettings.RunParams += (string.IsNullOrEmpty(productSettings.RunParams) ? RunParam : " " + RunParam); } productSettings.PreInstall = ExtractProductRequirementsRoot(productStaticData.SelectNodes("PreInstall/Requirements")); productSettings.PostInstall = ExtractProductRequirementsRoot(productStaticData.SelectNodes("PostInstall/Requirements")); productSettings.AnalyticsParams = ExtractProductAnalyticsParams(productStaticData.SelectNodes("AnalyticsParams/Param")); productSettings.LayoutName = XmlParser.GetStringValue(productStaticData, "Layout"); ControlsLayout defLocaleControlsLayout = null; productSettings.ControlsLayouts = null; XmlNodeList Locales = productSettingsNode.SelectNodes("Locales/Locale"); if (Locales.Count > 0) { foreach (XmlNode localeNode in Locales) { if (XmlParser.GetBoolAttribute(localeNode, "default")) { defLocaleControlsLayout = new ControlsLayout(new XmlNodeList[] { localeNode.SelectNodes("Texts/Text"), localeNode.SelectNodes("Images/Image"), localeNode.SelectNodes("UILayouts") }, formDesign.DefaultControlDesign); } string localeLanguage = XmlParser.GetStringAttribute(localeNode, "name"); if (localeLanguage == LocaleCode) { productSettings.ControlsLayouts = new ControlsLayout(new XmlNodeList[] { localeNode.SelectNodes("Texts/Text"), localeNode.SelectNodes("Images/Image"), localeNode.SelectNodes("UILayouts") }, formDesign.DefaultControlDesign); } } if (productSettings.ControlsLayouts == null) { productSettings.ControlsLayouts = defLocaleControlsLayout; } #if DEBUG if (productSettings.ControlsLayouts == null) { Logger.GetLogger().Error("Missing locale for product: " + productSettings.Name + " language code: " + LocaleCode); } #endif } return(productSettings); }