Manuelle Erstellung eines †SharePoint Services Solution Package

17
Manuelle Erstellung eines „ Windows SharePoint Services Solution Package(*.wsp) für das Deployment von Web Parts. Einführung Web Parts zu entwickeln ist erst seit der Einführung von Microsoft Office Sharepoint Server 2007 in vielen Firmen so richtig ein Thema geworden. Während der Entwicklung ist es meist sinnvoller ein Web Part erst mal von Hand ohne Solution Package zu deployen, weil dann kann man nach jedem Build das Web Part einfach per xcopy ins Bin Verzeichnis des Sharepoint Servers kopieren. Dies lässt sich natürlich auch leicht automatisieren, wenn man in Visual Studio einen „post build step“ hinzufügt. Wie das geht kann auf meinem Blog nachgelesen werden: http://blogs.msdn.com/martinv/archive/2007/08/23/remote- webpart-development-for-moss-2007.aspx . Wenn es dann aber darum geht ein Web Part in Produktion zu nehmen oder gegebenenfalls zu veröffentlichen, dann ist der empfohlene Weg über ein Solution Package. Hier möchte ich beschreiben wie man so eine WSP Datei komplett neu erstellen kann. Wenn man die Visual Studio extensions für Windows Sharepoint Services kurz VSeWSS installiert hat kann man sich direkt in einem Schritt ein WSP erzeugen lassen und auch das Web Part direkt deployen. Allerdings hat das einen kleinen Nachteil, nämlich dass hinterher immer der Application Pool des Sharepoint Servers recyclet wird, was bedeutet, dass der erste erneute Zugriff auf den Sharepoint Server ziemlich lange dauern kann. Außerdem ist hier von haus aus ein Deployment in den GAC eingestellt, was sich aber leicht im manifest.xml abändern lässt. In dem man DeploymentTarget="WebApplication“ einträgt. Technische Voraussetzungen Windows Sharepoint Services 3.0 oder MOSS 2007 Mindestens .NET Framework 3.0 Optional aber empfohlen das CAB SDK http://support.microsoft.com/kb/310618/EN-US/ Inhalt PackageTemplate.zip - enthält alle Verzeichnisse und Dateien die hier als Ausgangsbasis verwendet werden. CompleteSample.zip enthält zwei weitere Zip-Dateien o ASPSampleWebPart.zip enthält die VS Solution für das Beispiel Web Part. o PackageCompleted.zip enthält das fertige WSP und alle Änderungen für das Beispiel Web Part.

Transcript of Manuelle Erstellung eines †SharePoint Services Solution Package

Page 1: Manuelle Erstellung eines †SharePoint Services Solution Package

Manuelle Erstellung eines „Windows SharePoint Services Solution Package“ (*.wsp)

für das Deployment von Web Parts.

Einführung Web Parts zu entwickeln ist erst seit der Einführung von Microsoft Office Sharepoint Server 2007 in vielen Firmen so richtig ein Thema geworden. Während der Entwicklung ist es meist sinnvoller ein Web Part erst mal von Hand ohne Solution Package zu deployen, weil dann kann man nach jedem Build das Web Part einfach per xcopy ins Bin Verzeichnis des Sharepoint Servers kopieren. Dies lässt sich natürlich auch leicht automatisieren, wenn man in Visual Studio einen „post build step“ hinzufügt. Wie das geht kann auf meinem Blog nachgelesen werden: http://blogs.msdn.com/martinv/archive/2007/08/23/remote-webpart-development-for-moss-2007.aspx . Wenn es dann aber darum geht ein Web Part in Produktion zu nehmen oder gegebenenfalls zu veröffentlichen, dann ist der empfohlene Weg über ein Solution Package. Hier möchte ich beschreiben wie man so eine WSP Datei komplett neu erstellen kann. Wenn man die Visual Studio extensions für Windows Sharepoint Services kurz VSeWSS installiert hat kann man sich direkt in einem Schritt ein WSP erzeugen lassen und auch das Web Part direkt deployen. Allerdings hat das einen kleinen Nachteil, nämlich dass hinterher immer der Application Pool des Sharepoint Servers recyclet wird, was bedeutet, dass der erste erneute Zugriff auf den Sharepoint Server ziemlich lange dauern kann. Außerdem ist hier von haus aus ein Deployment in den GAC eingestellt, was sich aber leicht im manifest.xml abändern lässt. In dem man DeploymentTarget="WebApplication“ einträgt.

Technische Voraussetzungen Windows Sharepoint Services 3.0 oder MOSS 2007

Mindestens .NET Framework 3.0

Optional aber empfohlen das CAB SDK

http://support.microsoft.com/kb/310618/EN-US/

Inhalt

PackageTemplate.zip - enthält alle Verzeichnisse und Dateien die hier als Ausgangsbasis verwendet werden.

CompleteSample.zip – enthält zwei weitere Zip-Dateien o ASPSampleWebPart.zip – enthält die VS Solution für das Beispiel Web Part. o PackageCompleted.zip – enthält das fertige WSP und alle Änderungen für das

Beispiel Web Part.

Page 2: Manuelle Erstellung eines †SharePoint Services Solution Package

Wie erzeuge ich ein WSP File für ein ASP.NET Web Part. Als Beispiel nehme ich ein ASP.NET Web Part, da hier normalerweise keine für das Deployment notwendigen Konfigurationsdateien mit generiert werden, wie das etwa den Templates aus VSeWSS der Fall ist. 1. Entpacken des Zip-Archivs „PackageTemplate.zip“.

Das Zip-File in ein neues Unterverzeichnis z.B. „Package“ extrahieren. Man erhält dort dann

die folgende Verzeichnis Struktur:

2. Entpacken des Zip-Archivs „SampleComplete.zip“ und des darin enthaltenen Zip-Archivs ASPSampleWebPart.zip. Das Zip in ein neues Unterverzeichnis z.B. „WebPart“ extrahieren. Dort liegt dann eine Visual Studio 2008 Solution mit einem einfachen Beispiel Web Part. Für das Deployment brauchen wir aber dann nur die beiden Dateien aus dem „bin\Debug“ Verzeichnis „ASPSampleWebPart.dll“ und „ASPSampleWebPart.pdb“. Diese beiden Dateien kopieren wir dann in das Verzeichnis wohin wir auch das vorige Zip-Archiv extrahiert hatten. In unserem Fall also das Package Unterverzeichnis aus Schritt 1. Damit haben wir dort dann folgende Struktur: [Package]

ASPWebPartSample.dll

ASPWebPartSample.pdb

manifest.xml

part.ddf

[bin]

setup_bin.bat

setup_gac.bat

uninstall.bat

[UniqueFolderName]

feature.xml

[WebPart]

AssemblyName.webpart

AssemblyName.xml

3. Umbenennen der beiden Dateien im WebPart Unterverzeichnis und ändern des Verzeichnisnamens von „UniqueFolderName“.

Die beiden Dateien im Unetrverzeichnis „WebParts\WebPart“ müssen entsprechend dem Namen des Web Part Assemblys umbenannt werden. Also von „AssemblyName.webpart“

Page 3: Manuelle Erstellung eines †SharePoint Services Solution Package

nach „ASPWebPartSample.webpart“. Die andere Datei „AssemblyName.xml“ dann entsprechend in „ASPWebPartSample.xml“ umbenennen. Pro Feature wird auf dem Sharepoint Server ein Verzeichnis angelegt, deswegen muss man hier für das Verzeichnis UniqueFolderName ein eigenen auf dem Server für ein Feature eindeutigen Namen vergeben. Somit ergibt sich dann diese Struktur:

[Package]

ASPWebPartSample.dll

ASPWebPartSample.pdb

manifest.xml

part.ddf

[bin]

setup_bin.bat

setup_gac.bat

uninstall.bat

[ASPWebPartSampleDir]

feature.xml

[WebPart]

ASPWebPartSample.webpart

ASPWebPartSample.xml

4. Anpassen der Datei manifest.xml im Root-Verzeichnis

<Solution SolutionId="<Solution Guid>"

xmlns="http://schemas.microsoft.com/sharepoint/">

<FeatureManifests>

<FeatureManifest Location=" <UniqueFolderName>\feature.xml"/>

</FeatureManifests>

<Assemblies>

<Assembly DeploymentTarget="<WebApplication | GlobalAssemblyCache>"

Location="<AssemblyName.dll>">

<SafeControls>

<SafeControl Assembly="<AssemblyName>, Version=<VersionNumber>,

Culture=neutral, PublicKeyToken=<Public Key of the Assembly>"

Namespace="<Namespace of Web Part>" TypeName="*" Safe="True" />

</SafeControls>

</Assembly>

</Assemblies>

</Solution>

Alles was gelb markiert ist muss angepasst werden. Um den ersten Eintrag die „SolutionId" anpassen zu können müssen wir uns eine neue GUID besorgen. Dazu in Visual Studio unter dem ToolsMenu den Eintrag „Create Guid“ anklicken oder einfach von einer Kommandozeile das Tool direkt mit „guidgen“ aufrufen. Dann erscheint der folgende Dialog:

Page 4: Manuelle Erstellung eines †SharePoint Services Solution Package

Abbildung 1: Create GUID Dialog

Im Dialog dann die 4. Darstellungsform einer Guid auswählen und dann auf den Copy Button klicken. Jetzt im manifest.xml den Bereich <Solution Guid> markieren und die Guid mit “Paste” einfügen. Man muss allerdings noch die beiden geschweiften Klammern am Anfang und am Ende entfernen, so dass der Eintrag dann so aussieht: SolutionId="1A3AC704-53D2-4b27-B62A-AC353B0CCB28"

Im Element FeatureManifest unter Location muss auch noch der Verzeichnisname entsprechend dem Schritt 3 auf „ASPWebPartSampleDir“ geändert werden. Der nächste Eintrag entscheidet darüber auf welche Art und Weise das Web Part deployed werden soll. Der Eintrag „GlobalAssemblyCache“ ist offensichtlich die Einstellung damit das Assembly des Web Parts in den GAC deployed wird. Wir werden allerdings die andere Möglichkeit „WebApplication“ verwenden, so dass das Web Part Assembly in das „Bin“ Verzeichnis des Servers deployed wird. Dieses Verzeichnis ist bei einer Standardinstallation: C:\Inetpub\wwwroot\wss\VirtualDirectories\80\bin

In der gleichen Element „Assembly“ muss auch noch das Attribut „Location“ gesetzt werden, was in unserem Fall einfach der Dateiname des Assembly ist, da sich das Assembly im gleichen Verzeichnis, wie die Datei manifest.xml ist auch keine Pfadangabe notwendig. Also hier das angepasste Element „Assembly“: <Assembly DeploymentTarget="WebApplication"

Location="ASPWebPartSample.dll">

Page 5: Manuelle Erstellung eines †SharePoint Services Solution Package

Das nächste Element “SafeControl” startet mit dem dem Attribut Assembly, wo man den Namen des Assembly ohne die Extension DLL einträgt. Für die folgenden Attribute muss man dann schon mehr über die Implementierung des Web Parts wissen. Wie zum Beispiel den verwendeten Namespace, eventuell den Klassennamen, wenn man bei Type nicht alle Types mit „*“ als sicher markieren möchte. Wenn man den Source Code zur Verfügungt hat lassen sich diese Informationen dort entnehmen. Hier der Source zu unserem Beispiel Web Part, der Code in ASPWebPartSample.cs: using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Serialization;

using System.Runtime.InteropServices;

namespace WebPartNamespace

{

[Guid("47fb27ff-5d2f-4fa7-bef0-8b6a4a794d28")]

public class ASPWebPartSampleClass :

System.Web.UI.WebControls.WebParts.WebPart

{

private Label MyLabel;

public ASPWebPartSampleClass()

{

}

// Create ASP.NET Controls in here ..

protected override void CreateChildControls()

{

base.CreateChildControls();

MyLabel = new Label();

MyLabel.Text = "Ich bin ein ASP.NET Web Part!";

}

// Write out the HTML Code to Render the WebPart

protected override void RenderContents(HtmlTextWriter writer)

{

base.RenderContents(writer);

MyLabel.RenderControl(writer);

}

}

}

Der Namespace und der Type bzw. der Klassenname sind markiert. Die Versionsnummer lässt sich in Visual Studio auch ermitteln und zwar in dem man im Solution Explorer mit der rechten Maustaste auf das Projekt klickt und dann im Kontextmenü auf Properties klickt. Dann erscheint diese Form:

Page 6: Manuelle Erstellung eines †SharePoint Services Solution Package

Abbildung 2: Projekt Eigenschaften Form in Visual Studio

Page 7: Manuelle Erstellung eines †SharePoint Services Solution Package

Hier jetzt auf Assembly Information klicken und man bekommt diesen Dialog hier angezeigt:

Abbildung 3: Assembly Information Dialog

Man kann die Version aber auch einfach aus der Datei „AssemblyInfo.cs“ entnehmen. Wenn allerdings nur das Assembly als DLL vorliegt, dann kann man diese Informationen z.B. über „Intermediate Language Disassembler“ (ILDasm.exe) erhalten. Dieses Tool ist im Framework SDK enthalten. Wenn man dort das Assembly öffnet bekommt man diese Infos angezeigt:

Page 8: Manuelle Erstellung eines †SharePoint Services Solution Package

Abbildung 4: Screenshot von ILDasm mit ASPWebPartSamle.dll

Was wir jetzt noch benötigen ist das „Public Key Token“ hierzu nutzen wir ein weiteres Utlity aus dem Framework SDK „sn.exe“. Damit lässt sich in einem Kommandofenster dieser Wert wie folgt ermitteln: C:\martinv\scratch\Deployment\Package>sn -T ASPWebPartSample.dll

Microsoft (R) .NET Framework Strong Name Utility Version 3.5.21022.8

Copyright (c) Microsoft Corporation. All rights reserved.

Public key token is a85f470389c59b97

Page 9: Manuelle Erstellung eines †SharePoint Services Solution Package

So jetzt können wir alle Attribute im Element SafeControl anpassen und erhalten dann als die komplette manifest.xml: <Solution SolutionId="1A3AC704-53D2-4b27-B62A-AC353B0CCB28"

xmlns="http://schemas.microsoft.com/sharepoint/">

<FeatureManifests>

<FeatureManifest Location="ASPWebPartSampleDir\feature.xml"/>

</FeatureManifests>

<Assemblies>

<Assembly DeploymentTarget="WebApplication"

Location="ASPWebPartSample.dll">

<SafeControls>

<SafeControl Assembly="ASPWebPartSample, Version=1.0.0.0,

Culture=neutral, PublicKeyToken=a85f470389c59b97"

Namespace="WebPartNamespace" TypeName="ASPWebPartSampleClass"

Safe="True" />

</SafeControls>

</Assembly>

</Assemblies>

</Solution>

5. Anpassen der Datei feature.xml im WebParts-Verzeichnis <?xml version="1.0" encoding="utf-8"?>

<Feature Id="<Feature Guid>" Title="<Web Part Title>" Scope="Site"

Version="<AssemblyVersion>" Hidden="FALSE" DefaultResourceFile="core"

xmlns="http://schemas.microsoft.com/sharepoint/">

<ElementManifests>

<ElementManifest Location="WebPart\<AssemblyName>.xml" />

<ElementFile Location="WebPart\<AssemblyName>.webpart" />

</ElementManifests>

</Feature>

Hier brauchen wir dann nochmal eine neue Guid für die „Feature Id“, dazu benutzen wir wieder guidgen.exe wie bereits im Schritt 4 beschrieben. Beim Attribut „Title“ kann man eine kurze Beschreibung des Features eingeben. Alle übrigen Änderungen lassen sich mit bereits gewonnen Informationen anpassen: <?xml version="1.0" encoding="utf-8"?>

<Feature Id="8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1" Title="Ein ASP.Net

Beispiel Web Part" Scope="Site" Version="1.0.0.0" Hidden="FALSE"

DefaultResourceFile="core"

xmlns="http://schemas.microsoft.com/sharepoint/">

<ElementManifests>

<ElementManifest Location="WebPart\ASPWebPartSample.xml" />

<ElementFile Location="WebPart\ASPWebPartSample.webpart" />

</ElementManifests>

</Feature>

Page 10: Manuelle Erstellung eines †SharePoint Services Solution Package

6. Anpassen der Datei ASPWebPartSample.webpart im WebParts\WebPart-Verzeichnis <?xml version="1.0" encoding="utf-8"?>

<webParts>

<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">

<metaData>

<type name="<WebPartNameSpace>.<WebPartClassName>, <AssemblyName>,

Version=<AssemblyVersion>, Culture=neutral, PublicKeyToken=<Public Key

Token of Assembly>" />

<importErrorMessage>Cannot import <AssemblyName> Web

Part.</importErrorMessage>

</metaData>

<data>

<properties>

<property name="Title" type="string"><AssemblyName> Web

Part</property>

<property name="Description" type="string"><AssemblyName>

Description</property>

</properties>

</data>

</webPart>

</webParts>

Auch hier sind Anpassungen nötig die wir mit bereits vorhandenen Informationen vornehmen können. Dann können die Fehlermeldung im Falle eines fehlgeschlagenen Imports festgelegt werden und ein Title und eine Beschreibung zu dem Web Part eingegeben werden. <?xml version="1.0" encoding="utf-8"?>

<webParts>

<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">

<metaData>

<type name="WebPartNamespace.ASPWebPartSampleClass,

ASPWebPartSample, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=a85f470389c59b97" />

<importErrorMessage>Das ASPWebPartSample Web Part kann nicht

importiert werden.</importErrorMessage>

</metaData>

<data>

<properties>

<property name="Title" type="string">ASPWebPartSample Web

Part</property>

<property name="Description" type="string">ASPWebPartSample: Ein

kleines ASP.NET Web Part Beispiel</property>

</properties>

</data>

</webPart>

</webParts>

Page 11: Manuelle Erstellung eines †SharePoint Services Solution Package

7. Anpassen der Datei ASPWebPartSample.xml im WebParts\WebPart-Verzeichnis <?xml version="1.0" encoding="utf-8"?>

<Elements Id="<element id>"

xmlns="http://schemas.microsoft.com/sharepoint/" >

<Module Name="WebParts" List="113" Url="_catalogs/wp">

<File Path="WebPart\<AssemblyName>.webpart"

Url="<AssemblyName>.webpart" Type="GhostableInLibrary" />

</Module>

</Elements>

Nochmal schnell eine Guid erzeugt und die Datei ist auch schon angepasst . <?xml version="1.0" encoding="utf-8"?>

<Elements Id="3F2219DB-0247-462d-A349-7EDFE1F57E8F"

xmlns="http://schemas.microsoft.com/sharepoint/" >

<Module Name="WebParts" List="113" Url="_catalogs/wp">

<File Path="WebPart\ASPWebPartSample.webpart"

Url="ASPWebPartSample.webpart" Type="GhostableInLibrary" />

</Module>

</Elements>

Damit sind alle Einstellungen für das Deployment auf dem Sharepoint Server vorgenommen.

8. Anpassen der Datei part.ddf im Root-Verzeichnis

Die WSP Datei ist ja nichts anderes als eine CAB Datei also müssen wir jetzt die CAB Datei erzeuge. Dafür benutzt man am Besten das Utility makecab.exe. Um den Vorgang zu steuern kann man hier eine Konfiguration des Vorgangs in einer *.ddf Datei vornehmen. In unserem Fall ist das eben die Datei part.ddf. Eine genaue Beschreibung was man sich hier einstellen und steuern lässt findet man im CAB SDK. ;

.OPTION EXPLICIT ; Generate errors

.Set CabinetNameTemplate=<name of Solution Package>.wsp

.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory

.Set CompressionType=MSZIP;** All files are compressed in cabinet files

.Set UniqueFiles="ON"

.Set Cabinet=on

.Set DiskDirectory1=.\bin

manifest.xml

<AssemblyName>.dll

<AssemblyName>.pdb

UniqueFolderName\feature.xml UniqueFolderName\feature.xml

UniqueFolderName\WebPart\<AssemblyName>.webpart

UniqueFolderName\WebPart\<AssemblyName>.webpart

UniqueFolderName\WebPart\<AssemblyName>.xml

UniqueFolderName\WebPart\<AssemblyName>.xml

Als erstes einfach nur den gewünschten Dateinamen eingeben und überall wo gefordert den Namen des Assembly eintragen.

Page 12: Manuelle Erstellung eines †SharePoint Services Solution Package

;

.OPTION EXPLICIT ; Generate errors

.Set CabinetNameTemplate=MyASPWebPartSamplePkg.wsp

.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory

.Set CompressionType=MSZIP;** All files are compressed in cabinet files

.Set UniqueFiles="ON"

.Set Cabinet=on

.Set DiskDirectory1=.\bin

manifest.xml

ASPWebPartSample.dll

ASPWebPartSample.pdb

ASPWebPartSampleDir\feature.xml ASPWebPartSampleDir\feature.xml

ASPWebPartSampleDir\WebPart\ASPWebPartSample.webpart

ASPWebPartSampleDir\WebPart\ASPWebPartSample.webpart

ASPWebPartSampleDir\WebPart\ASPWebPartSample.xml

ASPWebPartSampleDir\WebPart\ASPWebPartSample.xml

9. Erzeugen des WSP Packages „MyASPWebPartSamplePkg.wsp“

Dazu benutzen wir ein Kommandofenster und navigieren uns in das Root Verzeichnis unserer Package-Struktur. Also in das Unterverzeichnis wo auch die Datei part.ddf liegt. Dann wird makecab.exe wie folgt ausgeführt:

C:\martinv\scratch\Deployment\Package>makecab /f part.ddf

Cabinet Maker - Lossless Data Compression Tool

18,962 bytes in 6 files

Total files: 6

Bytes before: 18,962

Bytes after: 4,020

After/Before: 21.20% compression

Time: 0.09 seconds ( 0 hr 0 min 0.09 sec)

Throughput: 205.75 Kb/second

Das fertige WSP Package File liegt dann im “Bin” Unterverzeichnis

10. Deployment des WSP Packages „MyASPWebPartSamplePkg.wsp“

Dazu benutzen wir die im „Bin“ Verzeichnis liegenden Batchdateien für den Fall einer Installation in das lokale „Bin“ Verzeichnis der Sharepoint Servers verwenden wir die Datei setup_bin.bat, wo wir aber noch ein paar Anpassungen vornehmen müssen: stsadm -o addsolution -filename "<SolutionPackageName>.wsp"

stsadm -o deploysolution -name "<SolutionPackageName>.wsp" -local -url

http://localhost

stsadm -o activatefeature -id <Feature Guid> -Url http://localhost

Zuerst zweimal den Dateinamen des WSP Packages angeben und dann braucht man nochmal die „feature guid“ aus Schritt 5 oder man kann auch alternativ mit dem flag „–filename“ den relativen Pfad zur Datei feature.xml angeben. Hier die angepasste Batch Datei setup_bin.bat:

Page 13: Manuelle Erstellung eines †SharePoint Services Solution Package

stsadm -o addsolution -filename "MyASPWebPartSamplePkg.wsp"

stsadm -o deploysolution -name "MyASPWebPartSamplePkg.wsp" -local -url

http://localhost

stsadm -o activatefeature -id 8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1 -Url

http://localhost

Für eine Installation im GlobalAssemblyCache (GAC) muss wie bereits in Schritt 4 beschrieben im manifest.xml als “DeploymentTarget=GlobalAssemblyCache“ eingetragen werden und im Batchfile muss dann beim Aufruf von stsadm –o deploysolution der zusätzliche Parameter „-allowGacDeployment“ angeben werden. Die fertige Batch Datei für ein GAC Deployment würde dann so aussehen: stsadm -o addsolution -filename "MyASPWebPartSamplePkg.wsp"

stsadm -o deploysolution -name "MyASPWebPartSamplePkg.wsp" –local

-allowGacDeployment -url http://localhost

stsadm -o activatefeature -id 8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1 -Url

http://localhost

Jetzt können wir auf dem Server das Batch File setup_bin.bat ausführen was im Erfolgsfall folgende Ausgabe produziert: C:\martinv\Deployment\Package\bin>setup_bin

C:\martinv\Deployment\Package\bin>stsadm -o addsolution -filename

"MyASPWebPartSamplePkg.wsp"

Operation completed successfully.

C:\martinv\Deployment\Package\bin>stsadm -o deploysolution -name

"MyASPWebPartSamplePkg.wsp" -local -url http://localhost

Operation completed successfully.

C:\martinv\Deployment\Package\bin>stsadm -o activatefeature -id

8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1 -Url http://localhost

Operation completed successfully.

Jetzt kann man mit dem Browser auf eine beliebige Seite des Shrepoint Servers navigieren und dann oben rechts oben unter den „Site Actions“ auf „Edit Page“ klicken. Eine Web Part Zone auswählen und dort über der Titelzeile auf „Add Web Part“ klicken. Im folgenden dann unser Web Part in der Liste unter „Miscellaneous“ suchen und dann markieren.

Page 14: Manuelle Erstellung eines †SharePoint Services Solution Package

Abbildung 5: Add Web Parts Dialog

Jetzt nur noch auf den Add Button klicken und das Web Part erscheint auf der Seite:

Abbildung 6: Beispiel ASP.NET Web Part auf Sharepoint Seite

Page 15: Manuelle Erstellung eines †SharePoint Services Solution Package

11. Deinstallation des WSP Packages „MyASPWebPartSamplePkg.wsp“ Dazu benutzen kann man auch die im „Bin“ Verzeichnis liegende Batchdateie für den Fall einer Deinstallation (uninstall.bat) verwenden: stsadm -o deactivatefeature -id <Feature Guid> -Url http://localhost

-force

stsadm -o uninstallfeature -id <Feature Guid> -force

stsadm -o retractsolution -name "<SolutionPackageName>.wsp" -local -url

http://localhost

stsadm -o deletesolution -name "<SolutionPackageName>.wsp"

Wie bereits in den Setup Batchdateien auch, muss hier wieder der Solution Package Name und die „Feature Id“ eingetragen werden. Daraus ergibt sich dann: stsadm -o deactivatefeature -id 8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1

-Url http://localhost -force

stsadm -o uninstallfeature -id 8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1

-force

stsadm -o retractsolution -name "MyASPWebPartSamplePkg.wsp" -local -url

http://localhost

stsadm -o deletesolution -name "MyASPWebPartSamplePkg.wsp"

Wenn man die Deinstallation durchführt erhält man folgende Ausgabe: C:\martinv\Deployment\Package\bin>uninstall

C:\martinv\Deployment\Package\bin>stsadm -o deactivatefeature -id

8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1 -Url http://localhost -force

Operation completed successfully.

C:\martinv\Deployment\Package\bin>stsadm -o uninstallfeature -id

8D9B183D-1D3F-495e-8748-BB6FD3D5FAF1 -force

Operation completed successfully.

C:\martinv\Deployment\Package\bin>stsadm -o retractsolution -name

"MyASPWebPartSamplePkg.wsp" -local -url http://localhost

Operation completed successfully.

C:\martinv\Deployment\Package\bin>stsadm -o deletesolution -name

"MyASPWebPartSamplePkg.wsp"

Operation completed successfully.

Page 16: Manuelle Erstellung eines †SharePoint Services Solution Package

Wenn man das Web Part nicht auf allen Seiten entfernt hat, dann erscheint jetzt dort wo das Web Part eingebunden war folgende Fehlermeldung:

Abbildung 7: Fehlermeldung wg. fehlendem Web Part

Natürlich kann man den Fehler jetzt auch noch beheben, indem man einfach das Fehler Web Part von der Seite entfernt. So das war jetzt die sehr ausführliche Beschreibung wie man eine WSP bzw. CAB File für ein Deployment eines Web Parts erstellen kann. Ich habe das nirgends gut beschrieben gefunden, deswegen hoffe ich, dass dies einigen Leuten weiterhelfen kann. Viele Grüße Euer Martin Vollmer

Page 17: Manuelle Erstellung eines †SharePoint Services Solution Package

Links SharePoint Developer Centers: http://msdn.microsoft.com/sharepoint http://msdn2.microsoft.com/en-us/sharepoint/ SharePoint Product Center http://www.microsoft.com/sharepoint Windows SharePoint Services Web Parts Resource Center http://msdn.microsoft.com/en-us/sharepoint/bb851483.aspx The Sharepoint Introduction for .Net Developers http://www.microsoft.com/click/SharePointDeveloper/ Automating Solution Package Creation for Windows SharePoint Services by Using MSBuild http://msdn.microsoft.com/en-us/library/cc441431.aspx Auf Codeplex ( www.codeplex.com )gibt e seine Menge Tools und Templates für Sharepoint. Einfach „Sharepoint“ in der Suche eingeben.

Sharepoint Blogger Sharepoint Team Blog http://blogs.msdn.com/sharepoint/ Jan Tielens http://weblogs.asp.net/jan/ Gute Infos zu WSS und Sharepoint unf auch ASP.NET Controls Autor des SmartPart Web Parts (Container für ASP.NET user controls, http://www.codeplex.com/smartpart ) Dan Winter http://blogs.msdn.com/dwinter/default.aspx Viele gute Tipps und Beispiele