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);
                }
            }
        }
Beispiel #2
0
                                  /// <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;
                }
                                                             ));
                                  }