public void Install_1() { var source = ManifestUtilsTests.Get_TEZT_PATH(); var target = source + "_INSTALLED"; using (var fs = new LocalFileSystem("L1")) { var session = fs.StartSession(); var sourceDir = session[source] as FileSystemDirectory; var manifest = ManifestUtils.GeneratePackagingManifest(sourceDir, packageName: "Package1"); var fn = Path.Combine(source, ManifestUtils.MANIFEST_FILE_NAME); try { manifest.Configuration.ToLaconicFile(fn); var set = new List <LocalInstallation.PackageInfo> { new LocalInstallation.PackageInfo("Package1", sourceDir, null)//no relative path }; using (var install = new LocalInstallation(target)) { Console.WriteLine("Installed anew: " + install.CheckLocalAndInstallIfNeeded(set)); } } finally { IOMiscUtils.EnsureFileEventuallyDeleted(fn); } } }
/// <summary> /// Checks the local version and performs local software installation on this machine if needed /// This process is an integral part og AHGOV/HostGovernorService implementation and should not be called by developers /// </summary> /// <returns>True if installation was performed</returns> internal bool CheckAndPerformLocalSoftwareInstallation(IList <string> progress, bool force = false) { return (Metabank.fsAccess("BinCatalog.CheckAndPerformLocalSoftwareInstallation", BIN_CATALOG, (session, dir) => { var sw = System.Diagnostics.Stopwatch.StartNew(); if (progress != null) { progress.Add("{0} Building install set...".Args(App.LocalizedTime)); } var installSet = new List <LocalInstallation.PackageInfo>(); foreach (var appPackage in HostGovernorService.Instance.AllPackages) { var subDir = appPackage.MatchedPackage.FullName; var packageDir = dir.GetSubDirectory(subDir); if (progress != null) { progress.Add(" + {0}".Args(appPackage.ToString())); } if (packageDir == null) { throw new MetabaseException(StringConsts.METABASE_INSTALLATION_BIN_PACKAGE_NOT_FOUND_ERROR.Args(appPackage.Name, subDir)); } installSet.Add(new LocalInstallation.PackageInfo(appPackage.Name, packageDir, appPackage.Path)); } if (progress != null) { progress.Add("Initiating local installation"); progress.Add(" Root Path: {0}".Args(HostGovernorService.Instance.UpdatePath)); progress.Add(" Manifest Path: {0}".Args(HostGovernorService.Instance.RunPath)); progress.Add(" Force: {0}".Args(force)); } var anew = false; using (var install = new LocalInstallation(HostGovernorService.Instance.UpdatePath, HostGovernorService.Instance.RunPath)) { anew = install.CheckLocalAndInstallIfNeeded(installSet, force); } if (progress != null) { progress.Add(" Installed anew: {0}".Args(anew)); progress.Add("{0} Done. Duration: {1}".Args(App.LocalizedTime, sw.Elapsed)); } return anew; } )); }