如何使用 Sitecore.Install.PackageGenerator 以编程方式将 sitecore 项目添加到 sitecore 包?

How to add sitecore items to a sitecore package programatically using Sitecore.Install.PackageGenerator?

我想使用 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");
            }}

我已经实现了一个工具,它可以完全满足您的要求。它在 Sitecore Marketplace 上仍处于审阅模式。一旦获得批准,我将更新答案。

但在此期间,您可以下载它 here and the code is available on my GitHub。下面是如何使用该工具:

  1. 通过安装向导安装 Sitecore 包。
  2. 打开 Sitecore 菜单并单击 Package Auto Generator
  3. 上传 CSV 文件。 CSV 文件应采用以下格式:

无需指定header。

  • 第一列:

    提供 Sitecore 路径

  • 第二列:

    指定它是 Item 还是 File

  • 第三列:

    指定是否要 包括子项目

上传后,在应用程序中填写必要的字段,然后单击“下一步”。将生成包并可以下载。对于您的情况,您可以获得如下所示的 CSV 文件:

此外,您还需要更改随附的配置文件以指定您的源数据库。至于你的情况,它将被设置为 web。配置文件在 App_Config/Include/Sitecore.PackageAutoGenerator.Settings.config 中找到并更改

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

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