Как программно добавить элементы 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. Ниже описано, как использовать инструмент:
- Установите пакет Sitecore с помощью мастера установки.
- Откройте меню Sitecore и нажмите " Автогенератор пакетов".
- Загрузите файл CSV. Файл CSV должен быть в следующем формате:
Не нужно указывать заголовок.
Первый столбец:
Укажите путь к Sitecore
Вторая колонка:
Укажите, если это элемент или файл
Третья колонка:
Укажите, будете ли вы включать подпункты
После загрузки заполните необходимое поле в приложении и нажмите "Далее". Пакет будет создан и может быть загружен. Для вашего случая у вас может быть файл CSV, как показано ниже:
Кроме того, вам нужно будет изменить файл конфигурации, который сопровождает его, чтобы указать вашу исходную базу данных. Что касается вашего случая, он будет установлен в Интернете. Конфигурационный файл находится в App_Config/Include/Sitecore.PackageAutoGenerator.Settings.config
и изменить
<setting name="SourceDatabase" value="master" />
в
<setting name="SourceDatabase" value="web" />