Come creare un file di solution (.wsp)
Un file solution (.wsp) di Sharepoint 2007 (WSS3 - MOSS) non è altro che un file .cab con all'interno un file manifest.xml più tutti gli altri file necessari.
Creare un file di solution in 4 passi.
1) Per prima cosa va creato il file manifest.xml (assegnandogli un nuovo SolutionId che è di tipo guid). Il manifest indica a SharePoint come è composta la solution e cosa deve fare con i file contenuti.
2) Il secondo passo è creare un file con estensione .ddf (Diamond Directive File), che serve a fornire al comando makecab.exe l'elenco di tutti i file che vanno inclusi nella solution (file .wsp). I file possono essere di qualsiasi tipo, ovvero: dll, aspx, xml, css, feature ...
3) a questo punto possiamo generare il file wsp
4) installiamolo
Il vantaggi principali delle solution sono:
Creare un file di solution in 4 passi.
1) Per prima cosa va creato il file manifest.xml (assegnandogli un nuovo SolutionId che è di tipo guid). Il manifest indica a SharePoint come è composta la solution e cosa deve fare con i file contenuti.
XML: manifest.xml
<Solution SolutionId="00000000-0000-0000-0000-000000000000" xmlns="http://schemas.microsoft.com/sharepoint/" >
<FeatureManifests>
<FeatureManifest Location="SgartFeature\feature.xml" />
</FeatureManifests>
<TemplateFiles>
<TemplateFile Location="LAYOUTS\Sgart\pagina1.aspx" />
</TemplateFiles>
<Assemblies>
<Assembly Location="SgartFeature.dll" DeploymentTarget="GlobalAssemblyCache" >
<SafeControls>
<SafeControl Assembly="SgartFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000" Namespace="SgartFeature" TypeName="*" Safe="True" />
</SafeControls>
</Assembly>
</Assemblies>
</Solution>
In questo esempio la solution è composta da:
- una feature (Solution\FeatureManifests\FeatureManifest)
- una pagina aspx (Solution\TemplateFiles\TemplateFile) che verrà copiata sotto ...\12\TEMPLATE\LAYOUTS\Sgart\
- una dll (Solution\Assemblies\Assembly ) da mettere nella gac (attributo DeploymentTarget)
Il tag TemplateFile cosidera come root (per la copia dei file) il percorso:
- %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE
mentre il tag FeatureManifest considera come root il percorso:
- %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES
- una feature (Solution\FeatureManifests\FeatureManifest)
- una pagina aspx (Solution\TemplateFiles\TemplateFile) che verrà copiata sotto ...\12\TEMPLATE\LAYOUTS\Sgart\
- una dll (Solution\Assemblies\Assembly ) da mettere nella gac (attributo DeploymentTarget)
Il tag TemplateFile cosidera come root (per la copia dei file) il percorso:
- %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE
mentre il tag FeatureManifest considera come root il percorso:
- %CommonProgramFiles%\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES
2) Il secondo passo è creare un file con estensione .ddf (Diamond Directive File), che serve a fornire al comando makecab.exe l'elenco di tutti i file che vanno inclusi nella solution (file .wsp). I file possono essere di qualsiasi tipo, ovvero: dll, aspx, xml, css, feature ...
.OPTION EXPLICIT ; Generate errors
.Set CabinetNameTemplate=solution.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 MaxDiskSize=CDROM
.Set Cabinet=on
.Set DiskDirectory1=.
.Set DestinationDir=
dirSolution\manifest.xml
dirSolution\SgartFeature.dll
.Set DestinationDir=SgartFeature
dirSolution\SgartFeature\feature.xml
dirSolution\SgartFeature\elementManifest.xml
dirSolution\SgartFeature\SgartFeature.webpart
.Set DestinationDir=LAYOUTS\Sgart
dirSolution\pagina1.aspx
Le principali direttive del file ddf sono:
- CabinetNameTemplate il nome del file solution che verrà generato
- DestinationDir la directory che verrà creata nel file wsp
dopo ogni DestinationDir segue l'elenco (completo di percorso di origine) dei file da aggiungere.
In alternativa all'uso di DestinationDir, è possibile elencare il percorso del file di origine separato da uno spazio seguito dal percorso di destinazione (pathFileFisico pathFileVirtualeNelFileWsp), esempio:
dirSolution\manifest.xml manifest.xml
dirSolution\SgartFeature\feature.xml SgartFeature\feature.xml
Con la parola dirSolution mi riferisco alla cartella in cui avete i vostri file
Vedi anche Dimensione limitata dei file di solution (WSP)
- CabinetNameTemplate il nome del file solution che verrà generato
- DestinationDir la directory che verrà creata nel file wsp
dopo ogni DestinationDir segue l'elenco (completo di percorso di origine) dei file da aggiungere.
In alternativa all'uso di DestinationDir, è possibile elencare il percorso del file di origine separato da uno spazio seguito dal percorso di destinazione (pathFileFisico pathFileVirtualeNelFileWsp), esempio:
dirSolution\manifest.xml manifest.xml
dirSolution\SgartFeature\feature.xml SgartFeature\feature.xml
Con la parola dirSolution mi riferisco alla cartella in cui avete i vostri file
Vedi anche Dimensione limitata dei file di solution (WSP)
3) a questo punto possiamo generare il file wsp
DOS / Batch file
c:\windows\system32\makecab.exe /F solution.ddf
Il file makecab.exe può essere scaricato da qui Microsoft Cabinet SDK
4) installiamolo
DOS / Batch file: installSolution.bat
set SPAdminTool=%CommonProgramFiles%\Microsoft Shared\web server extensions\12\BIN\stsadm.exe
set PackageFile=%~dp0solution.wsp
"%SPAdminTool%" -o addsolution -filename "%PackageFile%"
"%SPAdminTool%" -o deploysolution -name "%PackageName%" –allcontenturls –local -allowGacDeployment
I parametri possibili per stsadm.exe sono:
- addsolution aggiunge il file wsp nel DB
- deploysolution prende la solution dal DB, estrae i file e li installa
- retractsolution elimina i file precedentemente installati con deploysolution (comprese le dll nella gac)
- deletesolution elimina il file wsp dal DB
per maggiori info stsadm.exe /?
Non è possibile fare l'update di una solution quindi bisogna lanciare in sequenza: retractsolution, deletesolution, addsolution e infine deploysolution
- addsolution aggiunge il file wsp nel DB
- deploysolution prende la solution dal DB, estrae i file e li installa
- retractsolution elimina i file precedentemente installati con deploysolution (comprese le dll nella gac)
- deletesolution elimina il file wsp dal DB
per maggiori info stsadm.exe /?
Non è possibile fare l'update di una solution quindi bisogna lanciare in sequenza: retractsolution, deletesolution, addsolution e infine deploysolution
Il vantaggi principali delle solution sono:
- avere un unico file compresso che contiene tutto il necessario
- memorizzare il tutto in un unico punto, ovvero il DB di Configrazione di SharePoint
- possono essere facilmente installate e distribuite su più FrontEnd
- nel caso reinstalli il server di FrontEnd, tutte le solution sono installate automaticamente (ovvero vengono prese dal DBConfig, decomprese in una cartella temporanea, e da qui vengono installate le dll nella GAC, le feature nel relativo percorso, ecc...)
I file sono solo un esempio, non funzionante, per fare una panoramica sulla sintassi. Prossimamente maggiori info.