public void InstallPackage(string path)
        {
            // Use default logger
            ILog log = LogManager.GetLogger("root");

            XmlConfigurator.Configure((XmlElement)ConfigurationManager.GetSection("log4net"));

            FileInfo pkgFile = new FileInfo(path);

            if (!pkgFile.Exists)
            {
                throw new ClientAlertException($"Cannot access path '{path}'. Please check path setting.");
            }

            Sitecore.Context.SetActiveSite("shell");
            using (new SecurityDisabler())
            {
                using (new ProxyDisabler())
                {
                    using (new SyncOperationContext())
                    {
                        Sitecore.Install.Framework.IProcessingContext context = new Sitecore.Install.Framework.SimpleProcessingContext(); //
                        Sitecore.Install.Items.IItemInstallerEvents   events  =
                            new Sitecore.Install.Items.DefaultItemInstallerEvents(new Sitecore.Install.Utils.BehaviourOptions(Sitecore.Install.Utils.InstallMode.Overwrite, Sitecore.Install.Utils.MergeMode.Undefined));
                        context.AddAspect(events);
                        Sitecore.Install.Files.IFileInstallerEvents events1 = new Sitecore.Install.Files.DefaultFileInstallerEvents(true);
                        context.AddAspect(events1);
                        var inst = new Sitecore.Install.Installer();
                        inst.InstallPackage(Sitecore.MainUtil.MapPath(path), context);
                    }
                }
            }
        }
Esempio n. 2
0
        public ActionResult InstallPackage()
        {
            StringBuilder ret = new StringBuilder();
            Stopwatch     sw  = new Stopwatch();

            sw.Start();
            try
            {
                using (new SecurityDisabler())
                    using (new SyncOperationContext())
                    {
                        IProcessingContext   context = new SimpleProcessingContext();
                        IItemInstallerEvents events  =
                            new DefaultItemInstallerEvents(
                                new BehaviourOptions(InstallMode.Overwrite, MergeMode.Undefined));
                        context.AddAspect(events);
                        IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                        context.AddAspect(events1);

                        Sitecore.Install.Installer installer = new Sitecore.Install.Installer();
                        installer.InstallPackage(MainUtil.MapPath(@"C:\inetpub\wwwroot\demo1.local\App_Data\packages\bigtst.zip"), context);
                    }
            }
            catch (Exception e)
            {
                ret.Append(e.ToString());
            }
            finally
            {
                ret.Append($"\n\n{sw.Elapsed.TotalSeconds}");
            }

            return(Content(ret.ToString()));
        }
        public void InstallPackage(string path)
        {
            // Use default logger
            ILog log = LogManager.GetLogger("root");
            XmlConfigurator.Configure((XmlElement)ConfigurationManager.GetSection("log4net"));

            FileInfo pkgFile = new FileInfo(path);

            if (!pkgFile.Exists)
                throw new ClientAlertException($"Cannot access path '{path}'. Please check path setting.");

            Sitecore.Context.SetActiveSite("shell");
            using (new SecurityDisabler())
            {
                using (new ProxyDisabler())
                {
                    using (new SyncOperationContext())
                    {
                        Sitecore.Install.Framework.IProcessingContext context = new Sitecore.Install.Framework.SimpleProcessingContext(); //
                        Sitecore.Install.Items.IItemInstallerEvents events =
                            new Sitecore.Install.Items.DefaultItemInstallerEvents(new Sitecore.Install.Utils.BehaviourOptions(Sitecore.Install.Utils.InstallMode.Overwrite, Sitecore.Install.Utils.MergeMode.Undefined));
                        context.AddAspect(events);
                        Sitecore.Install.Files.IFileInstallerEvents events1 = new Sitecore.Install.Files.DefaultFileInstallerEvents(true);
                        context.AddAspect(events1);
                        var inst = new Sitecore.Install.Installer();
                        inst.InstallPackage(Sitecore.MainUtil.MapPath(path), context);
                    }
                }
            }
        }
        /// <summary>
        /// If verification fails, the package will be installed by this method.
        /// </summary>
        /// <param name="packageFileName">The file name of the Sitecore Package located in Sitecore's configured Packages folder.</param>
        protected virtual void InstallPackage(string packageFileName)
        {
            var filePath = $"{Sitecore.Configuration.Settings.DataFolder}/packages/{packageFileName}";

            using (new SecurityDisabler())
            {
                var installMode = Details.InstallMode;

                if (installMode == InstallMode.Undefined)
                {
                    installMode = PackageVerifierConfiguration.Current.DefaultInstallMode;
                }

                var mergeMode = Details.MergeMode;
                if (mergeMode == MergeMode.Undefined)
                {
                    mergeMode = PackageVerifierConfiguration.Current.DefaultMergeMode;
                }

                using (new SyncOperationContext())
                {
                    IProcessingContext   context = new SimpleProcessingContext();
                    IItemInstallerEvents events  =
                        new DefaultItemInstallerEvents(
                            new BehaviourOptions(installMode, mergeMode));

                    context.AddAspect(events);
                    IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                    context.AddAspect(events1);

                    var installer = new Sitecore.Install.Installer();
                    installer.InstallPackage(MainUtil.MapPath(filePath), context);
                }
            }
        }
        public void InstallPackage()
        {
            var filepath = "";

            if (System.Text.RegularExpressions.Regex.IsMatch(Settings.DataFolder, @"^(([a-zA-Z]:\\)|(//)).*"))
            {
                //if we have an absolute path, rather than relative to the site root
                filepath = Settings.DataFolder +
                           @"\packages\DemandbasePackage.zip";
            }
            else
            {
                filepath = HttpRuntime.AppDomainAppPath + Settings.DataFolder.Substring(1) +
                           @"\packages\DemandbasePackage.zip";
            }
            try
            {
                GeneratePackage(filepath);
                int count = 0;
                while (true)
                {
                    if (count > 15)
                    {
                        throw new Exception("Demandbase package extracted to data folder packages however appears to be locked, unlock this file and recycle the app pool.");
                    }
                    if (!IsFileLocked(new FileInfo(filepath)))
                    {
                        using (new SecurityDisabler())
                        {
                            using (new SyncOperationContext())
                            {
                                IProcessingContext   context = new SimpleProcessingContext();
                                IItemInstallerEvents events  =
                                    new DefaultItemInstallerEvents(
                                        new BehaviourOptions(InstallMode.Overwrite, MergeMode.Undefined));
                                context.AddAspect(events);
                                IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                                context.AddAspect(events1);

                                Sitecore.Install.Installer installer = new Sitecore.Install.Installer();
                                installer.InstallPackage(MainUtil.MapPath(filepath), context);
                                break;
                            }
                        }
                    }
                    else
                    {
                        Thread.Sleep(1000);
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error("Demandbase was unable to initialize", e, this);
            }
        }
Esempio n. 6
0
        public void InstallZipPackage(string path, Credentials credentials)
        {
            Login(credentials);

            // Fallback to temp folder
            if (File.Exists(Server.MapPath(path)))
            {
                path = Server.MapPath(path);
            }
            else
            {
                path = Server.MapPath("/temp/" + path);
            }


            var file = new FileInfo(path);

            if (!file.Exists)
            {
                throw new ApplicationException(string.Format("Cannot access path '{0}'.", path));
            }

            Sitecore.Context.SetActiveSite("shell");
            using (new SecurityDisabler())
            {
                using (new ProxyDisabler())
                {
                    using (new SyncOperationContext())
                    {
                        IProcessingContext   context = new SimpleProcessingContext();   //
                        IItemInstallerEvents events  =
                            new DefaultItemInstallerEvents(new Sitecore.Install.Utils.BehaviourOptions(Sitecore.Install.Utils.InstallMode.Overwrite, Sitecore.Install.Utils.MergeMode.Undefined));
                        context.AddAspect(events);
                        IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                        context.AddAspect(events1);
                        var installer = new Sitecore.Install.Installer();
                        installer.InstallPackage(path, context);
                    }
                }
            }
        }
        /// <summary>
        /// Starts up a new tokenkeeper that will be set up as a singleton
        /// </summary>
        /// <param name="args"></param>
        public void Process(PipelineArgs args)
        {
            if (TokenKeeper.TokenSingleton == null)
            {
                RegisterSitecoreTokens();
                TokenKeeper.TokenSingleton = Tokens;
            }

            Assert.ArgumentNotNull(args, "args");
            RegisterRoutes("tokenManager");

            if (RequiredSitecoreItemsMissing())
            {
                var filepath = "";
                if (System.Text.RegularExpressions.Regex.IsMatch(Settings.DataFolder, @"^(([a-zA-Z]:\\)|(//)).*")) //if we have an absolute path, rather than relative to the site root
                    filepath = Settings.DataFolder +
                               @"\packages\TokenManager.TokenManagerPackage.zip";
                else
                    filepath = HttpRuntime.AppDomainAppPath + Settings.DataFolder.Substring(1) +
                               @"\packages\TokenManager.TokenManagerPackage.zip";
                try
                {
                    var manifestResourceStream = GetType().Assembly
                        .GetManifestResourceStream("TokenManager.Resources.TokenManagerPackage.zip");
                    manifestResourceStream?.CopyTo(new FileStream(filepath, FileMode.Create));
                    Task.Run(() =>
                    {

                        while (true)
                        {
                            if (!IsFileLocked(new FileInfo(filepath)))
                            {

                                using (new SecurityDisabler())
                                {
                                    using (new ProxyDisabler())
                                    {
                                        using (new SyncOperationContext())
                                        {
                                            IProcessingContext context = new SimpleProcessingContext();
                                            IItemInstallerEvents events =
                                                new DefaultItemInstallerEvents(
                                                    new BehaviourOptions(InstallMode.Overwrite, MergeMode.Undefined));
                                            context.AddAspect(events);
                                            IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                                            context.AddAspect(events1);

                                            Sitecore.Install.Installer installer = new Sitecore.Install.Installer();
                                            installer.InstallPackage(MainUtil.MapPath(filepath), context);
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                                Thread.Sleep(1000);
                        }
                    });
                }
                catch (Exception e)
                {
                    Log.Error("TokenManager was unable to initialize", e, this);
                }
            }
        }
        /// <summary>
        /// Starts up a new tokenkeeper that will be set up as a singleton
        /// </summary>
        /// <param name="args"></param>
        public void Process(PipelineArgs args)
        {
            if (TokenIdentifier.Current == null)
            {
                TokenIdentifier.IdentifierSingleton = Identifier;
            }
            if (TokenKeeper.TokenSingleton == null)
            {
                TokenKeeper.TokenSingleton = Tokens;
            }

            Assert.ArgumentNotNull(args, "args");

            RegisterRoutes("tokenManager");

            TokenKeeper._isSc8 = IsSc8();

            if (RequiredSitecoreItemsMissing())
            {
                var filepath = "";
                if (System.Text.RegularExpressions.Regex.IsMatch(Settings.DataFolder, @"^(([a-zA-Z]:\\)|(//)).*"))
                {
                    //if we have an absolute path, rather than relative to the site root
                    filepath = Settings.DataFolder +
                               @"\packages\TokenManager.TokenManagerPackage.zip";
                }
                else
                {
                    filepath = HttpRuntime.AppDomainAppPath + Settings.DataFolder.Substring(1) +
                               @"\packages\TokenManager.TokenManagerPackage.zip";
                }
                try
                {
                    using (var manifestResourceStream = GetType().Assembly
                                                        .GetManifestResourceStream(TokenKeeper.IsSc8
                                                        ? "TokenManager.Resources.TokenManagerPackage.zip"
                                                        : "TokenManager.Resources.TokenManagerSc7.zip"))
                        using (var file = new FileStream(filepath, FileMode.Create))
                        {
                            manifestResourceStream?.CopyTo(file);
                        }

                    int count = 0;
                    while (true)
                    {
                        if (!IsFileLocked(new FileInfo(filepath)))
                        {
                            using (new SecurityDisabler())
                                using (new SyncOperationContext())
                                {
                                    IProcessingContext   context = new SimpleProcessingContext();
                                    IItemInstallerEvents events  =
                                        new DefaultItemInstallerEvents(
                                            new BehaviourOptions(InstallMode.Overwrite, MergeMode.Undefined));
                                    context.AddAspect(events);
                                    IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                                    context.AddAspect(events1);

                                    Sitecore.Install.Installer installer = new Sitecore.Install.Installer();
                                    installer.InstallPackage(MainUtil.MapPath(filepath), context);
                                    break;
                                }
                        }


                        Thread.Sleep(1000);
                        count++;
                        if (count > 15)
                        {
                            break;
                        }
                    }

                    RegisterSitecoreTokens();
                    ValidateInsertOptions();
                }
                catch (Exception e)
                {
                    Log.Error("TokenManager was unable to initialize", e, this);
                }
            }
            else
            {
                RegisterSitecoreTokens();
                ValidateInsertOptions();
            }
        }
        private bool EnsureItemDependencies(Type type)
        {
            if (RequiredItemMissing())
            {
                var filepath = "";
                //if we have an absolute path, rather than relative to the site root
                if (System.Text.RegularExpressions.Regex.IsMatch(Settings.DataFolder, @"^(([a-zA-Z]:\\)|(//)).*"))
                {
                    filepath = Settings.DataFolder +
                               @"\packages\ThisIsMyPackage.zip";
                }
                else
                {
                    filepath = State.HttpRuntime.AppDomainAppPath + Settings.DataFolder.Substring(1) +
                               @"\packages\ThisIsMyPackage.zip";
                }
                try
                {
                    type.Assembly
                    .GetManifestResourceStream($"{type.Assembly.GetName()}.ThisIsMyPackage.zip")
                    ?.CopyTo(new FileStream(filepath, FileMode.Create));
                    Task.Run(() =>
                    {
                        while (true)
                        {
                            if (!IsFileLocked(new FileInfo(filepath)))
                            {
                                using (new SecurityDisabler())
                                {
                                    using (new SyncOperationContext())
                                    {
                                        IProcessingContext context  = new SimpleProcessingContext();
                                        IItemInstallerEvents events =
                                            new DefaultItemInstallerEvents(
                                                new BehaviourOptions(InstallMode.Overwrite, MergeMode.Undefined));
                                        context.AddAspect(events);
                                        IFileInstallerEvents events1 = new DefaultFileInstallerEvents(true);
                                        context.AddAspect(events1);

                                        Sitecore.Install.Installer installer = new Sitecore.Install.Installer();
                                        installer.InstallPackage(MainUtil.MapPath(filepath), context);
                                        break;
                                    }
                                }
                            }

                            Thread.Sleep(1000);
                        }
                    });
                }
                catch (Exception e)
                {
                    Log.Error("Unable to install dependent package", e, this);
                    return(false);
                }

                return(true);
            }

            return(true);
        }