【发布时间】:2016-11-01 20:54:16
【问题描述】:
我想使用 Sitecore.Install.PackageGenerator 以编程方式在我的 sitedata 文件夹中创建所有项目的包。我能够将每个项目的 Uri 属性添加到包中,但无法弄清楚如何添加项目本身。请在下面找到我的代码 sn-p。
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");
}}
【问题讨论】:
-
添加项目本身是什么意思?哪个部分不工作?
-
在代码 sn-p 中的 for 循环中,我想将 Sitecore.Data.Items.Item 项添加到包中。我无法找到一种方法来做到这一点。此外,还应添加 item 的所有子项。
-
请在下方查看我的回答
标签: sitecore sitecore8 sitecore8.1