Пример #1
0
        public void EvaluateTests(string taskSiteName, bool appPoolExists, bool siteExists, int errorsCount, string appPoolValidationMessage, string siteValidationMessage)
        {
            // Arrange
            var fixture = new Fixture();

            var                 task          = Substitute.For <Task>(TaskName, fixture.Create <int>(), null, new List <InstallParam>(), new Dictionary <string, string>());
            InstallParam        siteNameParam = new InstallParam(SiteName, taskSiteName);
            List <InstallParam> paramList     = new List <InstallParam>
            {
                siteNameParam
            };

            task.LocalParams.Returns(paramList);

            var validator = Substitute.ForPartsOf <AppPoolSiteValidator>();

            validator.AppPoolExists(taskSiteName).Returns(appPoolExists);
            validator.SiteExists(taskSiteName).Returns(siteExists);

            // Act
            IEnumerable <ValidationResult> result = validator.Evaluate(new Task[] { task });
            IEnumerable <ValidationResult> errors = result.Where(r => r.State == ValidatorState.Error);

            // Assert
            Assert.Equal(errors.Count(), errorsCount);
            this.ValidateMessage(appPoolValidationMessage, taskSiteName, SiteName, task.Name, errors);
            this.ValidateMessage(siteValidationMessage, taskSiteName, SiteName, task.Name, errors);
        }
Пример #2
0
        public void ReturnsValidValidationResults(bool fileExists, ValidatorState expectedResult)
        {
            //Arrange
            Task task = Substitute.For <Task>("", 0, null, new List <InstallParam>(), new Dictionary <string, string>());

            task.LocalParams.Returns(new List <InstallParam>());

            InstallParam licenseFileParam = new InstallParam("LicenseFile", @"C:\license.xml");

            task.LocalParams.Add(licenseFileParam);

            List <Task> tasks = Substitute.For <List <Task> >();

            tasks.Add(task);

            LicenseFileValidator val = Substitute.ForPartsOf <LicenseFileValidator>();

            val.FileExists(string.Empty).ReturnsForAnyArgs(fileExists);

            val.Data["LicenseFileVariable"] = "LicenseFile";

            //Act
            IEnumerable <ValidationResult> results = val.Evaluate(tasks);

            //Assert
            Assert.Contains(results, r => r.State == expectedResult);
        }
        public bool OnMovingNext(WizardArgs wizardArgs)
        {
            var args = (Delete9WizardArgs)wizardArgs;

            args.ScriptsOnly = this.scriptsOnly.IsChecked ?? false;

            args.ScriptRoot = args.Tasker.GlobalParams.FirstOrDefault(p => p.Name == "FilesRoot").Value;

            Tasker tasker = args.Tasker;

            tasker.GlobalParams.FirstOrDefault(p => p.Name == "FilesRoot").Value = args.ScriptRoot;
            InstallParam sqlServer = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlServer");

            if (sqlServer != null)
            {
                sqlServer.Value = args.InstanceConnectionString.DataSource;
            }

            InstallParam sqlAdminUser = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminUser");

            if (sqlAdminUser != null)
            {
                sqlAdminUser.Value = args.InstanceConnectionString.UserID;
            }

            InstallParam sqlAdminPass = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminPassword");

            if (sqlAdminPass != null)
            {
                sqlAdminPass.Value = args.InstanceConnectionString.Password;
            }
            return(true);
        }
        private SitecoreEnvironment CreateSitecoreEnvironment(Tasker tasker, string sqlDbPrefix, string uninstallDataPath)
        {
            SitecoreEnvironment sitecoreEnvironment = new SitecoreEnvironment(sqlDbPrefix);

            sitecoreEnvironment.UnInstallDataPath = uninstallDataPath;
            sitecoreEnvironment.Members           = new List <SitecoreEnvironmentMember>();

            foreach (Task powerShellTask in tasker.Tasks)
            {
                InstallParam installParam = powerShellTask.LocalParams.FirstOrDefault(x => x.Name == SiteName);
                if (installParam != null && !string.IsNullOrEmpty(installParam.Value))
                {
                    Hashtable evaluatedLocalParams = tasker.GetEvaluatedLocalParams(powerShellTask.LocalParams, tasker.GlobalParams);
                    if (evaluatedLocalParams != null && evaluatedLocalParams[SiteName] != null)
                    {
                        sitecoreEnvironment.Members.Add(new SitecoreEnvironmentMember(evaluatedLocalParams[SiteName].ToString(),
                                                                                      SitecoreEnvironmentMember.Types.Site.ToString()));
                    }
                }
            }

            sitecoreEnvironment.Members = sitecoreEnvironment.Members.Distinct(new SitecoreEnvironmentMemberComparer()).ToList();

            return(sitecoreEnvironment);
        }
        protected override void Process([NotNull] ProcessorArgs args)
        {
            Install9Args arguments = (Install9Args)args;

            if (!arguments.Tasker.UnInstall || arguments.ScriptsOnly)
            {
                this.Skip();
                return;
            }

            InstallParam sqlDbPrefixParam = arguments.Tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlDbPrefix");

            if (sqlDbPrefixParam != null && !string.IsNullOrEmpty(sqlDbPrefixParam.Value))
            {
                foreach (SitecoreEnvironment sitecoreEnvironment in SitecoreEnvironmentHelper.SitecoreEnvironments)
                {
                    if (sitecoreEnvironment.Name == sqlDbPrefixParam.Value)
                    {
                        SitecoreEnvironmentHelper.SitecoreEnvironments.Remove(sitecoreEnvironment);
                        SitecoreEnvironmentHelper.SaveSitecoreEnvironmentData(SitecoreEnvironmentHelper.SitecoreEnvironments);
                        return;
                    }
                }
            }
        }
        public void ReturnsValidValidationResults(string deployRoot, long freeSpace, ValidatorState expectedResult, string resultMessage)
        {
            //Arrange
            Task task = Substitute.For <Task>("", 0, null, new List <InstallParam>(), new Dictionary <string, string>());

            task.LocalParams.Returns(new List <InstallParam>());
            InstallParam deployRootParam = new InstallParam("DeployRoot", deployRoot);

            task.LocalParams.Add(deployRootParam);

            List <Task> tasks = Substitute.For <List <Task> >();

            tasks.Add(task);

            DiskSpaceValidator val = Substitute.ForPartsOf <DiskSpaceValidator>();

            val.GetHardDriveFreeSpace(string.Empty).ReturnsForAnyArgs(freeSpace);

            val.Data["HardDriveWarningLimit"] = "5368709120";
            val.Data["HardDriveErrorLimit"]   = "3221225472";
            val.Data["DeployRoot"]            = "DeployRoot";
            //Act
            IEnumerable <ValidationResult> results = val.Evaluate(tasks);

            //Assert
            Assert.Contains(results, r => r.State == expectedResult && r.Message == resultMessage);
        }
Пример #7
0
        public async Task <ApiResponse <int> > Index(InstallParam param)
        {
            var installed = _configuration[ConfigKey.DbInstalled].ToBool();

            if (!param.AdminPwd.IsNullOrWhiteSpace() && !installed)
            {
                if (await _installService.InitializeDb(param))
                {
                    return(ApiResponse <int> .Ok());
                }
            }
            return(ApiResponse <int> .Fail("安装失败"));
        }
Пример #8
0
        public static Task CreateTask(string taskName, string[] paramNames, string[] paramValues)
        {
            var task = Substitute.For <Task>("someTask", 1, null, new List <InstallParam>(),
                                             new Dictionary <string, string>());
            List <InstallParam> iParams = new List <InstallParam>();

            for (int i = 0; i < paramNames.Length; ++i)
            {
                InstallParam p = new InstallParam(paramNames[i], paramValues[i]);
                iParams.Add(p);
            }

            task.LocalParams.Returns(iParams);
            return(task);
        }
Пример #9
0
        public void CertificateDoesNotExist(IEnumerable <Task> tasks)
        {
            InstallParam p = new InstallParam("somename", "somevalue");

            tasks.First().LocalParams.Add(p);
            CertificateValidator val = Substitute.ForPartsOf <CertificateValidator>();

            val.WhenForAnyArgs(a => a.FindCertificates(null)).DoNotCallBase();
            val.FindCertificates(null).ReturnsForAnyArgs(new X509Certificate2Collection());
            val.Data["StoreName"]  = "Root";
            val.Data["ParamNames"] = p.Name;

            Assert.DoesNotContain(val.Evaluate(tasks), r => r.State == Sitecore9Installer.Validation.ValidatorState.Error);
            val.DidNotReceiveWithAnyArgs().ValidateCertificate(null);
        }
        protected override void Process([NotNull] ProcessorArgs args)
        {
            Install9Args arguments = (Install9Args)args;

            if (arguments.Tasker.UnInstall || arguments.ScriptsOnly)
            {
                this.Skip();
                return;
            }

            InstallParam sqlDbPrefixParam = arguments.Tasker.GlobalParams.FirstOrDefault(p => p.Name == SqlDbPrefix);

            if (sqlDbPrefixParam != null && !string.IsNullOrEmpty(sqlDbPrefixParam.Value))
            {
                this.AddSitecoreEnvironment(this.CreateSitecoreEnvironment(arguments.Tasker, sqlDbPrefixParam.Value, arguments.UnInstallDataPath));
            }
        }
        protected override void Process([NotNull] ProcessorArgs args)
        {
            Install9Args arguments = args as Install9Args;

            Assert.ArgumentNotNull(arguments, nameof(arguments));
            if (arguments.ScriptsOnly)
            {
                this.Skip();
                return;
            }

            InstallParam param = arguments.Tasker.GlobalParams.FirstOrDefault(p => p.Name == "DeployRoot");

            if (param != null)
            {
                int retriesNumber = 3;
                for (int i = 0; i <= retriesNumber; i++)
                {
                    if (Directory.Exists(param.Value))
                    {
                        try
                        {
                            Directory.Delete(param.Value, true);
                        }
                        catch (System.IO.IOException ex)
                        {
                            Log.Warn($"Can't remove directory: {param.Value}. {ex.Message}");
                        }
                        if (Directory.Exists(param.Value))
                        {
                            if (retriesNumber == i)
                            {
                                throw new Exception($"Can't remove directory: {param.Value}");
                            }
                            Thread.Sleep(10000);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            Directory.Delete(arguments.Tasker.UnInstallParamsPath, true);
        }
        protected override void Process([NotNull] ProcessorArgs args)
        {
            Install9Args arguments = args as Install9Args;

            Assert.ArgumentNotNull(arguments, nameof(arguments));
            if (arguments.ScriptsOnly)
            {
                this.Skip();
                return;
            }

            Directory.Delete(arguments.Tasker.UnInstallParamsPath, true);
            InstallParam param = arguments.Tasker.GlobalParams.FirstOrDefault(p => p.Name == "DeployRoot");

            if (param != null && !Directory.GetFileSystemEntries(param.Value).Any())
            {
                Directory.Delete(param.Value, true);
            }
        }
Пример #13
0
        public void EvaluateTests(string cmTaskName, string cmSiteName, string identityServerTaskName, string identityServerAllowedCorsOrigins, string identityServerPasswordRecoveryUrl, int warningsCount)
        {
            // Arrange
            var fixture = new Fixture();

            var                 cmTask        = Substitute.For <Task>(cmTaskName, fixture.Create <int>(), null, new List <InstallParam>(), new Dictionary <string, string>());
            InstallParam        siteNameParam = new InstallParam(SiteName, cmSiteName);
            List <InstallParam> paramList     = new List <InstallParam>
            {
                siteNameParam
            };

            cmTask.LocalParams.Returns(paramList);

            var          identityServerTask       = Substitute.For <Task>(identityServerTaskName, fixture.Create <int>(), null, new List <InstallParam>(), new Dictionary <string, string>());
            InstallParam allowedCorsOriginsParam  = new InstallParam(AllowedCorsOrigins, identityServerAllowedCorsOrigins);
            InstallParam passwordRecoveryUrlParam = new InstallParam(PasswordRecoveryUrl, identityServerPasswordRecoveryUrl);

            paramList = new List <InstallParam>
            {
                allowedCorsOriginsParam,
                passwordRecoveryUrlParam
            };
            identityServerTask.LocalParams.Returns(paramList);

            var validator = Substitute.ForPartsOf <CmIdentityServerSiteNameValidator>();

            validator.Data["SitecoreXp1Cm"]       = SitecoreXp1Cm;
            validator.Data["SitecoreXm1Cm"]       = SitecoreXm1Cm;
            validator.Data["SitecoreXp0"]         = SitecoreXp0;
            validator.Data["SiteName"]            = SiteName;
            validator.Data["IdentityServer"]      = IdentityServer;
            validator.Data["AllowedCorsOrigins"]  = AllowedCorsOrigins;
            validator.Data["PasswordRecoveryUrl"] = PasswordRecoveryUrl;

            // Act
            IEnumerable <ValidationResult> result   = validator.Evaluate(new Task[] { cmTask, identityServerTask });
            IEnumerable <ValidationResult> warnings = result.Where(r => r.State == ValidatorState.Warning);

            // Assert
            Assert.Equal(warnings.Count(), warningsCount);
        }
Пример #14
0
        public async Task <bool> InitializeDb(InstallParam param)
        {
            _param = param;
            try
            {
                var connectString = $"Server={param.DbUrl};Database={param.DbName};uid={param.DbUserName};pwd={param.DbUserPwd}";
                ConfigDataHelper.UpdateConnectionString(ConfigKey.BlogsConnectionString, connectString);
                await _blogsContext.Database.EnsureCreatedAsync();

                Seed();
                ConfigDataHelper.UpdateDbInstallStatus(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            return(true);
        }
        public void NotCompatible(IEnumerable <Task> tasks)
        {
            InstallParam server = new InstallParam("server", "val");
            InstallParam user   = new InstallParam("user", "val");
            InstallParam pass   = new InstallParam("pass", "val");
            Task         t      = tasks.First();

            t.LocalParams.Add(server);
            t.LocalParams.Add(user);
            t.LocalParams.Add(pass);

            SqlVersionValidator val = Substitute.ForPartsOf <SqlVersionValidator>();

            val.Data["Server"]   = "server";
            val.Data["User"]     = "******";
            val.Data["Password"] = "******";
            val.Data["Versions"] = "15.0.*,17.0.*";
            val.WhenForAnyArgs(v => v.GetSqlVersion(null, null, null)).DoNotCallBase();
            val.GetSqlVersion(null, null, null).ReturnsForAnyArgs("12.0.12345.6789");
            Assert.Contains(val.Evaluate(tasks), r => r.State == Sitecore9Installer.Validation.ValidatorState.Error);
        }
Пример #16
0
        public void EvaluateTests(string cmTaskName, string cmSiteName, string ddsPatchTaskName, string ddsPatchSiteName, bool areAnyErrors)
        {
            // Arrange
            var fixture = new Fixture();

            var                 cmTask        = Substitute.For <Task>(cmTaskName, fixture.Create <int>(), null, new List <InstallParam>(), new Dictionary <string, string>());
            InstallParam        siteNameParam = new InstallParam(SiteName, cmSiteName);
            List <InstallParam> paramList     = new List <InstallParam>
            {
                siteNameParam
            };

            cmTask.LocalParams.Returns(paramList);

            var ddsPatchTask = Substitute.For <Task>(ddsPatchTaskName, fixture.Create <int>(), null, new List <InstallParam>(), new Dictionary <string, string>());

            siteNameParam = new InstallParam(SiteName, ddsPatchSiteName);
            paramList     = new List <InstallParam>
            {
                siteNameParam
            };
            ddsPatchTask.LocalParams.Returns(paramList);

            var validator = Substitute.ForPartsOf <CmDdsPatchSiteNameValidator>();

            validator.Data["SitecoreXp1Cm"]         = SitecoreXp1Cm;
            validator.Data["SitecoreXp1CmDdsPatch"] = SitecoreXp1CmDdsPatch;
            validator.Data["SiteName"] = SiteName;

            // Act
            IEnumerable <ValidationResult> result = validator.Evaluate(new Task[] { cmTask, ddsPatchTask });
            IEnumerable <ValidationResult> errors = result.Where(r => r.State == ValidatorState.Error);

            // Assert
            Assert.Equal(errors.Any(), areAnyErrors);
        }
        public void InitializeStep(WizardArgs wizardArgs)
        {
            var    args             = wizardArgs as ReinstallWizardArgs;
            string uninstallPath    = string.Empty;
            SitecoreEnvironment env = SitecoreEnvironmentHelper.GetExistingSitecoreEnvironment(args.Instance.Name);

            if (!string.IsNullOrEmpty(env?.UnInstallDataPath))
            {
                uninstallPath = env.UnInstallDataPath;
            }
            else
            {
                foreach (string installName in Directory.GetDirectories(ApplicationManager.UnInstallParamsFolder).OrderByDescending(s => s.Length))
                {
                    if (args.Instance.Name.StartsWith(Path.GetFileName(installName)))
                    {
                        uninstallPath = installName;
                        break;
                    }
                }
            }

            if (string.IsNullOrEmpty(uninstallPath))
            {
                WindowHelper.ShowMessage("UnInstall files not found.");
                wizardArgs.WizardWindow.Close();
            }

            Tasker       tasker    = new Tasker(uninstallPath);
            InstallParam sqlServer = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlServer");

            if (sqlServer != null)
            {
                sqlServer.Value = args.ConnectionString.DataSource;
            }

            InstallParam sqlAdminUser = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminUser");

            if (sqlAdminUser != null)
            {
                sqlAdminUser.Value = args.ConnectionString.UserID;
            }

            InstallParam sqlAdminPass = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminPassword");

            if (sqlAdminPass != null)
            {
                sqlAdminPass.Value = args.ConnectionString.Password;
            }

            tasker.UnInstall = true;
            args.Tasker      = tasker;
            StringBuilder displayText = new StringBuilder();

            displayText.AppendLine("Reinstall:");
            foreach (var task in tasker.Tasks.Where(t => t.SupportsUninstall()))
            {
                displayText.AppendLine(string.Format(" -{0}", task.Name));
            }

            this.TextBlock.Text = displayText.ToString();
            args.InstanceName   = args.Tasker.GlobalParams.First(p => p.Name == "SqlDbPrefix").Value;
        }
        public bool OnMovingNext(WizardArgs wizardArgs)
        {
            var productRevision = ProductRevision;

            Assert.IsNotNull(productRevision, nameof(productRevision));

            Product product = productRevision.SelectedValue as Product;

            Assert.IsNotNull(product, nameof(product));


            var name = GetValidWebsiteName();

            if (name == null)
            {
                return(false);
            }

            var connectionString = ProfileManager.GetConnectionString();

            SqlServerManager.Instance.ValidateConnectionString(connectionString);

            var licensePath = ProfileManager.Profile.License;

            Assert.IsNotNull(licensePath, @"The license file isn't set in the Settings window");
            FileSystem.FileSystem.Local.File.AssertExists(licensePath, "The {0} file is missing".FormatWith(licensePath));


            var args = (Install9WizardArgs)wizardArgs;

            args.Validate                 = this.runValidation.IsChecked.Value;
            args.InstanceName             = name;
            args.InstanceProduct          = product;
            args.InstanceConnectionString = connectionString;
            args.LicenseFileInfo          = new FileInfo(licensePath);
            args.Product = product;

            SolrDefinition solr = this.Solrs.SelectedItem as SolrDefinition;

            if (solr == null)
            {
                WindowHelper.ShowMessage("Please provide solr.");
                return(false);
            }

            args.SolrUrl    = solr.Url;  //this.solrUrl.Text;
            args.SorlRoot   = solr.Root; //this.solrRoot.Text;
            args.ScriptRoot = System.IO.Path.Combine(Directory.GetParent(args.Product.PackagePath).FullName, System.IO.Path.GetFileNameWithoutExtension(args.Product.PackagePath));

            if (!this.IsFilePathLengthValidInPackage(args.Product.PackagePath, args.ScriptRoot))
            {
                return(false);
            }

            if (!Directory.Exists(args.ScriptRoot))
            {
                Directory.CreateDirectory(args.ScriptRoot);
                WindowHelper.LongRunningTask(() => this.UnpackInstallationFiles(args), "Unpacking unstallation files.", wizardArgs.WizardWindow);
                WindowHelper.LongRunningTask(() => InstallTasksHelper.CopyCustomSifConfig(args), "Copying custom SIF configuration files to the install folder.", wizardArgs.WizardWindow);
                WindowHelper.LongRunningTask(() => InstallTasksHelper.AddUninstallTasks(args), "Add Uninstall tasks to the OOB config files.", wizardArgs.WizardWindow);
            }
            else
            {
                if (MessageBox.Show(string.Format("Path '{0}' already exists. Do you want to overwrite it?", args.ScriptRoot), "Overwrite?", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    Directory.Delete(args.ScriptRoot, true);
                    Directory.CreateDirectory(args.ScriptRoot);
                    WindowHelper.LongRunningTask(() => this.UnpackInstallationFiles(args), "Unpacking installation files.", wizardArgs.WizardWindow);
                    WindowHelper.LongRunningTask(() => InstallTasksHelper.CopyCustomSifConfig(args), "Copying custom SIF configuration files to the install folder.", wizardArgs.WizardWindow);
                    WindowHelper.LongRunningTask(() => InstallTasksHelper.AddUninstallTasks(args), "Add Uninstall tasks to the OOB config files.", wizardArgs.WizardWindow);
                }
            }

            string rootPath = this.LocationText.Text;

            if (!args.ScriptsOnly)
            {
                if (string.IsNullOrWhiteSpace(rootPath))
                {
                    WindowHelper.ShowMessage("Please specify location.");
                    return(false);
                }

                if (SIM.FileSystem.FileSystem.Local.Directory.Exists(rootPath))
                {
                    if (Directory.EnumerateFileSystemEntries(rootPath).Any())
                    {
                        if (WindowHelper.ShowMessage("The folder with the same name already exists and is not empty. Would you like to delete it?", MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.OK) == MessageBoxResult.OK)
                        {
                            SIM.FileSystem.FileSystem.Local.Directory.DeleteIfExists(rootPath, null);
                            SIM.FileSystem.FileSystem.Local.Directory.CreateDirectory(rootPath);
                        }
                    }
                }
                else
                {
                    SIM.FileSystem.FileSystem.Local.Directory.CreateDirectory(rootPath);
                }
            }

            Tasker       tasker    = new Tasker(args.ScriptRoot, Path.GetFileNameWithoutExtension(args.Product.PackagePath), rootPath);
            InstallParam sqlServer = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlServer");

            if (sqlServer != null)
            {
                sqlServer.Value = args.InstanceConnectionString.DataSource;
            }

            InstallParam sqlAdminUser = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminUser");

            if (sqlAdminUser != null)
            {
                sqlAdminUser.Value = args.InstanceConnectionString.UserID;
            }

            InstallParam sqlAdminPass = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlAdminPassword");

            if (sqlAdminPass != null)
            {
                sqlAdminPass.Value = args.InstanceConnectionString.Password;
            }

            InstallParam sqlDbPrefix = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SqlDbPrefix");

            if (sqlDbPrefix != null)
            {
                sqlDbPrefix.Value = args.InstanceName;
            }

            InstallParam licenseFile = tasker.GlobalParams.FirstOrDefault(p => p.Name == "LicenseFile");

            if (licenseFile != null)
            {
                licenseFile.Value = args.LicenseFileInfo.FullName;
            }

            InstallParam solrRoot = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SolrRoot");

            if (solrRoot != null)
            {
                solrRoot.Value = args.SorlRoot;
            }

            InstallParam solrService = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SolrService");

            if (solrService != null && !string.IsNullOrEmpty(solr.Service))
            {
                solrService.Value = solr.Service; // this.SolrService.Text;
            }

            InstallParam solrUrl = tasker.GlobalParams.FirstOrDefault(p => p.Name == "SolrUrl");

            if (solrUrl != null)
            {
                solrUrl.Value = args.SolrUrl;
            }

            args.ScriptsOnly = this.scriptsOnly.IsChecked ?? false;
            args.Tasker      = tasker;

            VersionToSolr vts = ProfileManager.Profile.VersionToSolrMap.FirstOrDefault(s => s.Vesrion == product.ShortVersion);

            if (vts == null)
            {
                vts         = new VersionToSolr();
                vts.Vesrion = product.ShortVersion;
                ProfileManager.Profile.VersionToSolrMap.Add(vts);
            }

            vts.Solr = solr.Name;
            ProfileManager.SaveChanges(ProfileManager.Profile);

            return(true);
        }