Как программно добавить элементы sitecore в пакет sitecore с помощью Sitecore.Install.PackageGenerator?

Я хочу программно создать пакет всех элементов в моей папке sitedata, используя Sitecore.Install.PackageGenerator . Я могу добавить свойство Uri каждого элемента в пакет, но не могу понять, как добавить этот элемент сам. Пожалуйста, найдите ниже мой фрагмент кода.

using (new Sitecore.SecurityModel.SecurityDisabler())
        {
            Sitecore.Data.Database db = Sitecore.Configuration.Factory.GetDatabase("web");
            Sitecore.Install.PackageProject document = new Sitecore.Install.PackageProject();

            document.Metadata.PackageName = "SitecoreBackup"+DateTime.Now;
            document.Metadata.Author = "PrePublishEvent";

            Sitecore.Install.Items.ExplicitItemSource source = new Sitecore.Install.Items.ExplicitItemSource(); //Create source – source should be based on BaseSource  

            source.Name = "SitecoreBackupSource";
            Sitecore.Data.Items.Item[] items = db.Items.Database.SelectItems("/sitecore/content/Sites/mysite/Site Data/*");

            foreach (Sitecore.Data.Items.Item item in items)
            {
               // source.Entries.Insert(0,item.ToString);
                source.Entries.Add(new Sitecore.Install.Items.ItemReference(item.Uri, false).ToString());
            }

            document.Sources.Add(source);
            document.SaveProject = true;

            //path where the zip file package is saved  
            using (Sitecore.Install.Zip.PackageWriter writer = new Sitecore.Install.Zip.PackageWriter("/data/packages/" + "SitecoreBackup" + DateTime.Now.Ticks.ToString() + ".zip"))
            {
                Sitecore.Context.SetActiveSite("shell");
                writer.Initialize(Sitecore.Install.Installer.CreateInstallationContext());
                Sitecore.Install.PackageGenerator.GeneratePackage(document, writer);
                Sitecore.Context.SetActiveSite("website");
            }}

1 ответ

Решение

Я реализовал инструмент, который выполняет именно то, что вам нужно. Он все еще находится в режиме просмотра на Sitecore Marketplace. Я обновлю ответ, как только он будет одобрен.

Но пока вы можете скачать его здесь, и код доступен на моем GitHub. Ниже описано, как использовать инструмент:

  1. Установите пакет Sitecore с помощью мастера установки.
  2. Откройте меню Sitecore и нажмите " Автогенератор пакетов".
  3. Загрузите файл CSV. Файл CSV должен быть в следующем формате:

Не нужно указывать заголовок.

  • Первый столбец:

    Укажите путь к Sitecore

  • Вторая колонка:

    Укажите, если это элемент или файл

  • Третья колонка:

    Укажите, будете ли вы включать подпункты

После загрузки заполните необходимое поле в приложении и нажмите "Далее". Пакет будет создан и может быть загружен. Для вашего случая у вас может быть файл CSV, как показано ниже:

Кроме того, вам нужно будет изменить файл конфигурации, который сопровождает его, чтобы указать вашу исходную базу данных. Что касается вашего случая, он будет установлен в Интернете. Конфигурационный файл находится в App_Config/Include/Sitecore.PackageAutoGenerator.Settings.config и изменить

<setting name="SourceDatabase" value="master" />

в

<setting name="SourceDatabase" value="web" />
Другие вопросы по тегам