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"); } }
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); }
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); }
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); }