Example #1
0
        async void Install(object sender, EventArgs e)
        {
            var item = ProjectHelpers.GetSelectedItems().FirstOrDefault();

            if (item == null)
            {
                return;
            }

            var    dir = new DirectoryInfo(item.GetFullPath());
            string installDir;
            var    package = GetPackage(dir.Name, out installDir);

            if (package == null || package.Files == null || !package.Files.Any())
            {
                return;
            }

            string manifestPath = item.ContainingProject.GetConfigFile();

            var settings = new InstallSettings
            {
                InstallDirectory = Path.Combine(item.GetFullPath(), installDir),
                SaveManifest     = VSPackage.Options.SaveManifestFile
            };

            await PackageService.InstallpackageAsync(manifestPath, package, settings);

            if (settings.SaveManifest)
            {
                item.ContainingProject.AddFileToProject(manifestPath, "None");
            }
        }
Example #2
0
        public ActionResult Install(InstallSettings data)
        {
            if (MvcApplication.IsInstalled)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            if (string.IsNullOrEmpty(data.DbDataSource) ||
                string.IsNullOrEmpty(data.DbDatabase) ||
                string.IsNullOrEmpty(data.DbLogin) ||
                string.IsNullOrEmpty(data.DbPassword) ||
                string.IsNullOrEmpty(data.AdminLogin) ||
                string.IsNullOrEmpty(data.AdminPassword) ||
                string.IsNullOrEmpty(data.RootUrl))
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            data.RootUrl       = data.RootUrl.Trim('/', '\\', ' ', '\t');
            data.AdminPassword = data.AdminPassword.Trim();
            data.AdminLogin    = data.AdminLogin.Trim();
            data.DbPassword    = data.DbPassword.Trim();
            data.DbLogin       = data.DbLogin.Trim();
            data.DbDatabase    = data.DbDatabase.Trim();
            data.DbDataSource  = data.DbDataSource.Trim();

            var baseConectionString = GetConnectionString(data.DbDataSource, data.DbDatabase, data.DbLogin, data.DbPassword);
            var dbCheck             = _installService.CheckDatabase(baseConectionString);

            if (!dbCheck)
            {
                return(new HttpUnauthorizedResult("db"));
            }


            var templatePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "InstallData",
                                            "Connections.mssql.template");
            var template = System.IO.File.ReadAllText(templatePath);
            var config   = template.Replace("%host%", data.DbDataSource)
                           .Replace("%password%", data.DbPassword)
                           .Replace("%username%", data.DbLogin)
                           .Replace("%db%", data.DbDatabase);

            var connectionsPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Connections.config");

            System.IO.File.WriteAllText(connectionsPath, config, Encoding.UTF8);

            var sqlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "InstallData",
                                       "RoCMS.Database_Create.sql");

            _installService.Install(sqlPath, baseConectionString, data.AdminLogin, data.AdminPassword, data.RootUrl);
            try
            {
                return(new HttpStatusCodeResult(HttpStatusCode.OK));
            }
            finally
            {
                System.Web.HttpRuntime.UnloadAppDomain();
            }
        }
        public void TestReadInstallSettingsFromFile()
        {
            string           filePath = this.WriteTextToTempFile(Consts.settingsXml01);
            IInstallSettings settings = new PackageInstaller().ReadInstallSettings(new FileInfo(filePath));

            InstallSettings expected = new InstallSettings {
                Version = 1.0
            };

            expected.FilesToInstall.Add(new InstallFile(@"Install-Manifest.xml", "Install.Install-Manifest.xml", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Transforms.targets", "Install.SlowCheetah.Transforms.targets", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Tasks.dll", "Install.SlowCheetah.Tasks.dll", FileType.Binary));

            CustomAssert.AssertAreEqual(expected, settings);
        }
        public void TestGetInstallerSettingsFromResx()
        {
            IInstallSettings settings = new PackageInstaller().ReadInstallSettings();

            Assert.IsNotNull(settings);

            InstallSettings expected = new InstallSettings {
                Version = 1.43
            };

            expected.FilesToInstall.Add(new InstallFile(@"Install-Manifest.xml", "Install.Install-Manifest.xml", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Transforms.targets", "Install.SlowCheetah.Transforms.targets", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Tasks.dll", "Install.SlowCheetah.Tasks.dll", FileType.Binary));

            CustomAssert.AssertAreEqual(expected, settings);
        }
Example #5
0
        public void TestGetInstallerSettingsFromXml()
        {
            IInstallSettings settings = new PackageInstaller().ReadInstallSettings(Consts.settingsXml01);

            Assert.IsNotNull(settings);

            InstallSettings expected = new InstallSettings {
                Version = 1.0
            };

            expected.FilesToInstall.Add(new InstallFile(@"Install-Manifest.xml", "Install.Install-Manifest.xml", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Transforms.targets", "Install.SlowCheetah.Transforms.targets", FileType.Text));
            expected.FilesToInstall.Add(new InstallFile(@"Microsoft.Web.XmlTransform.dll", "Install.Microsoft.Web.XmlTransform.dll", FileType.Binary));
            expected.FilesToInstall.Add(new InstallFile(@"SlowCheetah.Xdt.dll", "Install.SlowCheetah.Xdt.dll", FileType.Binary));

            CustomAssert.AssertAreEqual(expected, settings);
        }
Example #6
0
        public static async Task InstallpackageAsync(string manifestFilePath, InstallablePackage entry, InstallSettings settings)
        {
            _files.Clear();
            await VSPackage.Manager.Install(manifestFilePath, entry, settings);

            var project = ProjectHelpers.GetActiveProject();

            project.AddFilesToProject(_files);
        }