Skip to content
Dan Solovay edited this page Nov 30, 2016 · 2 revisions

← Developer Center

Manifest Engine

Description

Manifest is an xml document which holds metadata and installation strategy for each Sitecore module and custom package.

Detection

Location

The manifest should be stored in the following places to be picked up:

  1. .\Manifests\\*
  2. .\Plugins\\*
  3. %APPDATA%\Sitecore\Sitecore Instance Manager\Manifests\\*
  4. %APPDATA%\Sitecore\Sitecore Instance Manager\Plugins\\*
  5. Side-by-side with the distributive file

Note, here .\ means folder where SIM is installed to, and \\* means this folder and any descendant folders.

File Naming

The mapping between distributive and manifest is done via proper file naming.

Example: My Module 1.2.3 rev. 123456.zip will pick up and merge all following manifests if they exist:
  1. My Module.manifest.xml
  2. My Module 1.manifest.xml
  3. My Module 1.2.manifest.xml
  4. My Module 1.2.3.manifest.xml
  5. My Module 1.2.3 rev. 123456.manifest.xml
Example: My Files.zip will pick up only this manifest:
  1. My Files.manifest.xml

Manifests Cache

As long as SIM computes manifest (merges all manifest files for specific distributive into single manifest) the result is stored in the cache file %APPDATA%\Sitecore\Sitecore Instance Manager\Caches\manifest.txt which is useful to look in for troubleshooting. This means that any time you modify a manifest, you should either:

  • delete appropriate row in the file
  • delete the entire file
  • click SIM → Ribbon → Refresh → Everything

Manifests

There are 3 types of things you can install with SIM:

  1. Sitecore Standalone Product
  2. Sitecore Package
  3. Archive
1. Sitecore Standalone Product

For standalone product the manifest can contain only metadata, installation instructions cannot be applied.

Format
<manifest version="1.3">
  <standalone>
    <!-- METADATA -->
  </standalone>
</manifest>
Example: .\Manifests\Standalone\Sitecore 8.manifest.xml
<manifest version="1.3">
  <standalone>
    <limitations>
      <framework>
        <supportedVersion attr="1">v4.0</supportedVersion>
        <supportedVersion attr="2">v4.0 32bit</supportedVersion>
      </framework>
    </limitations>
  </standalone>
</manifest>
Example: .\Manifests\Standalone\Sitecore\Sitecore 8.0 rev. 141212.manifest.xml
<manifest version="1.3">
  <standalone>
    <label>Initial Release</label>
  </standalone>
</manifest>
Example: .\Manifests\Standalone\Jetstream.manifest.xml
<manifest version="1.3">
  <standalone>
    <name>Sitecore Jetstream</name>
    <shortName>jet</shortName>
    <limitations>
      <framework>
        <supportedVersion attr="2">v4.0 32bit</supportedVersion>
      </framework>
    </limitations>
  </standalone>
</manifest>
Example: .\Manifests\Standalone\Sitecore Foundry 4.0.0 rev. 121206.manifest.xml
<manifest version="1.3">  
  <standalone>
    <notSupported />
  </standalone>
</manifest>
Sitecore Package

Sitecore Modules and Custom Packages are in fact Sitecore Packages which has same manifest rules. You can define metadata in manifest alongside with the pre- and post-installation actions.

Format
<manifest version="1.3">
  <package>
    <!-- METADATA -->
    <install>
      <postStepActions skipStandard="true|false">
        <add type="NS.Class, DLL-IN-PACKAGE" method="Method" />
        ...
      </postStepActions>
      <before>
        <!-- ACTIONS -->
      </before>
      <after>
        <!-- ACTIONS -->
      </after>
    </install>
  </package>
</manifest>
Example: .\Manifests\Modules\Web Forms for Marketers 2.4.manifest.xml
<manifest version="1.3">
  <package>
    <sortOrder>90</sortOrder>
    <name>Sitecore Web Forms for Marketers</name>
    <install>
      <postStepActions skipStandard="true">
        <add type="Sitecore.Form.Core.Configuration.Installation, Sitecore.Forms.Core" method="ChooseSQLiteVersionDll" />
      </postStepActions>
      <after>
        <params>
          <param name="{Restricting Placeholders}" title="Please choose Restricting Placeholders" defaultValue="content" mode="multiselect" getOptionsType="SIM.Pipelines.ConfigurationActions, SIM.Pipelines" getOptionsMethod="GetPlaceholderNames" />
        </params>
        <actions>
          <publish mode="incremental" />
          <setRestrictingPlaceholders names="{Restricting Placeholders}" />
          <config path="App_Config\Include\Sitecore.Forms.config">
            <delete xpath="/configuration/sitecore/formsDataProvider[@type='Sitecore.Forms.Data.DataProviders.WFMDataProvider,Sitecore.Forms.Core']/param" />                        
          </config>
          <databases>
            <database name="wfm" fileName="Sitecore_WebForms.mdf" location="package.zip\files\Data" />
          </databases>
        </actions>
      </after>
    </install>
  </package>
</manifest>
Archive

Archive is a little bit more simple comparing to Sitecore Packages. Manifest can contain metadata and post-install actions only.

Format
<manifest version="1.3">
  <archive>
    <!-- METADATA -->
    <install>
      <!-- ACTIONS -->
    </install>
  </archive>
</manifest>
Example: .\Custom Packages\Configuration - Enable MVC-DMS for Sitecore 6.6.manifest.xml
<manifest version="1.3">
  <archive>
    <install>
      <actions>
        <editfile path="/Website/bin_Net4/Sitecore.Mvc.Analytics.dll">
          <move target="/Website/bin/Sitecore.Mvc.Analytics.dll" />
        </editfile>
        <editfile path="/Website/App_Config/Include/Sitecore.MvcAnalytics.config.disabled">
          <move target="/Website/App_Config/Include/Sitecore.MvcAnalytics.config" />
        </editfile>
      </actions>
    </install>
  </archive>
</manifest>
Example: .\Packages\Configuration - Enable Scaling for CD.manifest.xml
<manifest version="1.3">
  <archive>
    <install>
      <params>
        <param name="{Remote SQL Connection String}" title="Remote SQL Server Connection String" defaultValue="data source=SERVERNAME;user id=sa;password=12345;" />        
        <param name="{CM Instance Name}" title="CM Instance Name" defaultValue="" />
      </params>
      <actions>
        <config path="App_Config\ConnectionStrings.config">    
          <delete xpath="/connectionStrings/add" />
          <delete xpath="/connectionStrings/add" />
          <delete xpath="/connectionStrings/add" />
          <append xpath="/connectionStrings">            
            <add name="core" connectionString="{Remote SQL Connection String};Database={CM Instance Name}Sitecore_core" />
            <add name="master" connectionString="{Remote SQL Connection String};Database={CM Instance Name}Sitecore_master" />
            <add name="web" connectionString="{Remote SQL Connection String};Database={CM Instance Name}Sitecore_web" />
          </append>
        </config>        
      </actions>
    </install>
  </archive>
</manifest>
Example: .\Packages\Visual Studio 2012 MVC Website Project.manifest.xml
<manifest version="1.3">
  <archive>
    <install>
      <actions>
        <editfile path="/Website/Website.csproj">
          <replacevariables />
        </editfile>
        <editfile path="/Website/Website.sln">
          <move target="/Website/{InstanceName}.sln"/>
        </editfile>
      </actions>
    </install>
    <finish>
      <action text="Open the solution in Visual Studio" type="SIM.Tool.Windows.Pipelines.FinishActions, SIM.Tool.Windows" method="OpenSolution" />
    </finish>
  </archive>
</manifest>
Clone this wiki locally