Jan 242013
 

Feature Stapling wird genutzt, um z.B. bei der Erstellung einer MySite direkt eine neue Masterpage zuzuweisen.

Feature.xml

<?xml version="1.0" encoding="utf-8"?>
<Feature Id="F9AB6989-A3A8-4df2-8254-12987EE4FAA5" Title="SiteStaplerFeature" Scope="Farm" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/"> <ElementManifests>
<ElementManifest Location="Elements.xml" />
</ElementManifests>
</Feature>

Elements.xml

<?xml version="1.0" encoding="utf-8"?>
<Elements Id="F52F4322-4086-4341-8B88-4368779C1E37" xmlns="http://schemas.microsoft.com/sharepoint/" > <FeatureSiteTemplateAssociation Id="f6924d36-2fa8-4f0b-b16d-06b7250180fa" TemplateName="SPSPERS#0"/> <FeatureSiteTemplateAssociation Id="6ED78B2A-201F-4511-BACE-F7B4B0CB75A8" TemplateName="SPSPERS#0"/>
<FeatureSiteTemplateAssociation Id="14872A49-4124-4a91-BA61-EB0BD5155BF2" TemplateName="SPSPERS#0"/>
</Elements>

Diese Angaben aktivieren:

  • Publishing Feature
  • Feature zum Verteilen der neuen Masterpage
  • Anlegen einer neuen Seite mit Webpart

TemplateName="SPSPERS#0" steht in diesem Fall für die MySite

MySite Masterpage Feature

Feature.xml

<?xml version="1.0" encoding="utf-8"?>
<Feature Id="6ED78B2A-201F-4511-BACE-F7B4B0CB75A8" Title="MySiteMasterPage" Scope="Site" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/" ReceiverAssembly="MyAssembly.MyNameSpace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=282025704650b387" ReceiverClass="MyAssembly.MyNameSpace.FeatureRecieverClass"> <ElementManifests>
<ElementManifest Location="MySiteMasterPage\Module.xml" />
<ElementFile Location="MySiteMasterPage\MySite.master" />
</ElementManifests>
</Feature>

Elements.xml

<?xml version="1.0" encoding="utf-8"?>
<Elements Id="D8789972-4B6C-49b2-9A34-431BD5C296F3" xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="MySiteMasterPage" List="116" Url="_catalogs/masterpage">
<File Path="MySiteMasterPage\MySite.master" Url="MySite.master" Type="GhostableInLibrary" />
</Module>
</Elements>

Codebehind/FeatureReceiver

public override void Featureactivating(SPFeatureReceiverProperties properties) {
SPSite site = (SPSite)properties.Feature.Parent;
SPWeb web = site.OpenWeb();
web.CustomMasterUrl = "/_catalogs/masterpage/MySite.master";
web.Update();
}

Feature Dependencies

Feature Dependencies werden benutzt, um weitere Features zu aktivieren die benötigt werden, dies ist z.B. notwendig für das Publishing Feature!

Feature.xml

<Feature xmlns=http://schemas.microsoft.com/sharepoint/ Id="14872A49-4124-4a91-BA61-EB0BD5155BF2" Scope="Web" Hidden="False" Title="MySitePage" Description="Deploys a custom page with a webpart."> <ElementManifests>
<ElementManifest Location="MySitePages/elements.xml" />
</ElementManifests>
<ActivationDependencies>
<ActivationDependency FeatureId="22A9EF51-737B-4ff2-9346-694633FE4416" />
<ActivationDependency FeatureId="A392DA98-270B-4e85-9769-04C0FDE267AA" />
<ActivationDependency FeatureId="AEBC918D-B20F-4a11-A1DB-9ED84D79C87E" />
<ActivationDependency FeatureId="89E0306D-453B-4ec5-8D68-42067CDBF98E" />
<ActivationDependency FeatureId="D3F51BE2-38A8-4e44-BA84-940D35BE1566" />
</ActivationDependencies>
</Feature>

Zusätzlich verteilt dieses Feature noch eine Seite in die Pages Library und richtet darauf ein Core Results Webpart ein:

Elements.xml

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Pages" List="850" Url="Pages">
<File Name="SearchResult.aspx" Url="SearchResult.aspx" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" >
<AllUsersWebPart WebPartZoneID="Header" WebPartOrder="1">
<![CDATA[
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.Office.Server.Search.WebControls.PeopleCoreResultsWebPart, Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
</metaData>
<data>
<properties>
<property name="CacheXslStorage" type="bool">True</property>
<property name="Default" type="string" />
<property name="ChromeState" type="chromestate">Normal</property>
</properties>
</data>
</webPart>
</webParts>
]]>
</AllUsersWebPart>
</File>
</Module>
</Elements>
Sep 212011
 

Für eingefleischte Entwickler sicherlich bekannt, für Neulinge allerdings eine Hilfestellung bei der Installation von SharePoint Solutions (Webparts, Workflows, Eventhandler, usw…). Der Installer prüft bei der Ausführung, ob die Umgebung alle notwendigen Voraussetzungen erfüllt und installiert die Solution im SharePoint. Anschließend bleibt dann z.B. nur noch das Feature zu aktivieren, Webpart auf der Seite platzieren…

Das Tool ist kostenlos und kann von Codeplex heruntergeladen werden. Die momentane Version ist noch für den SharePoint 2007 (MOSS), allerdings ist der Quellcode frei verfügbar und es sind nicht viele Stellen die abgeändert werden müssen um das Setup auch für den SharePoint 2010 “fit” zu machen.

Danach steht der einfachen Installation von Solutions nichts mehr im Wege.

Der Installer besteht im besten Fall aus 4 Dateien, die auf den Server kopiert werden müssen:

setup.exe
setup.exe.config
logo.png
solution.wsp

Die ersten drei Dateien sind der Hauptbestandteil des Installers. Die Setup.exe ist der normale Installer und wird mit einem Doppelklick ausgeführt. Die zweite Datei (setup.exe.config) dient zur Konfiguration. Die dritte Datei ist optional, damit kann im Installer das Firmenlogo angezeigt werden. Die vierte Datei ist das Paket, welches im SharePoint bekannt gemacht werden soll, also euer Webpart, Workflow oder ähnliches. Da bietet der SharePoint Server zu viele Möglichkeiten um hier alle einzeln aufzulisten.

In der Konfigurationsdatei sind einige wenige Einstellungen vorzunehmen:

  • SolutionID
  • Name der WSP Datei
  • Titel des Setups

Der Rest kann im Normalfall so belassen werden (Ausnahmen bestätigen die Regel).
Für unsere Firma habe ich den Quellcode in 1 Stunde angepasst. Es ist also nicht wirklich schwer auch für den SharePoint Server 2010 Solutions professionell zu verteilen.