public void Validate() { var packageValidationManager = new PackageValidationManager { SourcePath = PackageValidation.PackagePath, SkipInstallation = true, SkipReportGeneration = true, }; var configurationError = string.Empty; var requiredSettingsString = string.Empty; if (LoadConfiguration(packageValidationManager, PackageValidation.WorkingFolder, out configurationError) && packageValidationManager.CheckIfRequiredSettingsPresent(out requiredSettingsString)) { packageValidationManager.ValidationStatusUpdated += new PackageValidationManager.ValidationStatusUpdatedHandler(PackageValidationManager_ValidationStatusUpdated); packageValidationManager.ValidationCompleted += new PackageValidationManager.ValidationCompletedHandler(PackageValidationManager_ValidationCompleted); packageValidationManager.ValidatePackage(PackageValidation.PackagePath); // since some validation items should be ignored and not be added to ValidationItems, if no one in validationItems is "Fail", the validaton should be "Pass" PackageValidation.Result = ValidationResult.Pass; foreach (var item in PackageValidation.ValidationItems) { if (item.Type == LogEventType.Fail) { PackageValidation.Result = ValidationResult.Fail; } } } else { PackageValidation.Result = ValidationResult.Fail; PackageValidation.ErrorMessage = string.IsNullOrEmpty(configurationError) ? requiredSettingsString : configurationError; } }
public static bool LoadConfiguration(PackageValidationManager packageValidationManager, string workingFolder, out string configurationError) { configurationError = string.Empty; try { if (ConfigurationManager.AppSettings["unzippedFolderLocation"] != null) { packageValidationManager.UnzippedFolderLocation = Path.Combine(workingFolder, ConfigurationManager.AppSettings["unzippedFolderLocation"]); } if (ConfigurationManager.AppSettings["dbType"] != null) { try { packageValidationManager.DbChoice = (DatabaseChoice)Enum.Parse(typeof(DatabaseChoice), ConfigurationManager.AppSettings["dbType"]); } catch (Exception) { } } var sqlInfo = ConfigurationManager.GetSection("SqlInfo") as SqlInfo; if (sqlInfo != null) { packageValidationManager.SqlDbInfo = new DbInfo(sqlInfo.AdminUsername, sqlInfo.AdminPassword, sqlInfo.Server); } var mySqlInfo = ConfigurationManager.GetSection("MySqlInfo") as MySqlInfo; if (mySqlInfo != null) { packageValidationManager.MySqlDbInfo = new DbInfo(mySqlInfo.AdminUsername, mySqlInfo.AdminPassword, mySqlInfo.Server); } var appGalleryConfigSection = ConfigurationManager.GetSection("AppGalleryRequirements") as AppGalleryRequirementsSection; if (appGalleryConfigSection.RequiredProviders != null) { foreach (RequiredProviderElement requiredProviderElement in appGalleryConfigSection.RequiredProviders) { if (!AppGalleryRequirements.RequiredProviders.Contains(requiredProviderElement.Name)) { AppGalleryRequirements.RequiredProviders.Add(requiredProviderElement.Name); } } } if (appGalleryConfigSection.OptionalProviders != null) { foreach (OptionalProviderElement optionalProviderElement in appGalleryConfigSection.OptionalProviders) { if (!AppGalleryRequirements.OptionalProviders.Contains(optionalProviderElement.Name)) { AppGalleryRequirements.OptionalProviders.Add(optionalProviderElement.Name); } } } if (appGalleryConfigSection.CustomValidParamTags != null) { foreach (CustomValidParamTag customValidParamTag in appGalleryConfigSection.CustomValidParamTags) { if (!AppGalleryRequirements.CustomTags.Contains(customValidParamTag.Name)) { AppGalleryRequirements.CustomTags.Add(customValidParamTag.Name); } } } } catch (Exception e) { configurationError = "Unexpected exception occurred while parsing configuration: " + e.Message; logger.Error(e, "SIR Package Parsing Configuration:"); return(false); } return(true); }