Dans le cas de la migration d’une ferme SharePoint 2007 vers 2013, nous avons vu que le processus implique le passage par une ferme SharePoint 2010.
Il existe de nombreux cas où les administrateurs ont développé (ou fait développer) des modèles de site sous SharePoint 2007. Ce fut d’ailleurs un des arguments massues de Microsoft à l’époque, car c’était plutôt simple à faire. Pour rappel, les articles suivant (ce qui ne nous rajeunit pas):
- SharePoint 2007 : Quelques actuces sur la création de modèle de sites
- Créer un Site Template pour WSS V3
Quoi qu’il en soit, si c’est la seule partie qui est nécessaire pour votre migration, il est certainement plus rapide de recréer ces modèles de sites en repartant de celui qui a été fait sous 2007 et recréant le même tout d’abord sous 2010, puis 2013.
Je vous invite pour cela à regarder cet ancien article pour 2007 qui est totalement adaptable pour 2010 (répertoire 14) ou même 2013 (répertoire 15):
La question se pose pour générer le fichier WSP qui pourra alors être chargé dans SharePoint 2010 ou 2013.
Création du WSP pour SharePoint 2010
Pour cette partie, j’ai utilisé l’évolution de WSPBuilder qui est resté en Beta, mais qui fonctionne correctement pour un cadre simple tel que celui-ci:
Une fois le MSI téléchargé et installé, on trouve les fichiers WSPBuilder sous le répertoire:
- C:\Program Files (x86)\WSPTools\WSPBuilderExtensions\
Il est préférable de copier ces fichier dans un répertoire de travail que nous utiliserons pour la suite (C:\TOOLS\WSPBuilder\WSPBuilder2010\). Dans ce même répertoire, on crée un sous-répertoire 14, dans lequel on va reproduire toute l’arborescense de SharePoint avec les différents fichiers de notre modèle:
Une fois cette organisation créée, on peut simplement double-cliquer sur le fichier WSPBuilder.exe ou créer un fichier CMD tel que le suivant :
WSPBuilder.exe -WSPName MY_TEMPLATE_2010.WSP
stsadm -o retractsolution -name MY_TEMPLATE_2010.WSP -immediate
PING 1.1.1.1 -n 1 -w 90000 >NUL
stsadm -o deletesolution -name MY_TEMPLATE_2010.WSP
stsadm -o addsolution -filename MY_TEMPLATE_2010.WSP
stsadm -o deploysolution -name MY_TEMPLATE_2010.WSP -immediate -allowgacdeployment
Au passage, la ligne du Ping permet de laisser le temps au SPTimer de désinstaller la solution si elle existait déjà (Cf. l’astuce en ligne: How to insert delays in your batch files).
Une fois le tout exécuté, votre solution est générée proprement, déjà déployée et utilisable pour votre migration, ou même vos nouveaux sites.
Qu’en est-il pour SharePoint 2013 ?
Création du WSP pour SharePoint 2013
WSPBuilder n’existe pas pour SharePoint 2013 et n’existera probablement jamais (dernière publication sur le projet CODEPLEX date de Janvier 2010). En revanche, la version existante pour 2010 va pouvoir nous servir.
En effet, lors de notre compilation pour le projet 2010, nous pouvons modifier le fichier de config “WSPBuilder.exe.config” pour mettre la clé suivante à true :
- <add key="BuildDDF" value="true"/>
Ainsi lors de la prochaine exécution pour notre modèle 2010, nous avons le détail du DDF utilisé par MAKECAB.EXE:
Une fois ce fichier “makecab.ddf” obtenu à la racine du WSPBuilder, il nous faut encore le fichier MANIFEST.XML qui est créé à la volée et ajouté dans le WSP. Ainsi, il faut extraire le fichier MANIFEST.XML en changeant l’extension WSP vers CAB.
On extrait le fichier manifest pour le mettre dans un répertoire de travail avec notre arborescence 15 et toute l’organisation de SharePoint 2013:
On édite le fichier makecab.DDF et manifest.xml pour modifier les chemins d’accès si nécessaire. Le fichier makcab.ddf sera semblable à celui-ci au final :
;*** MAKECAB - DDF done by Fabrice Romelard
;
.OPTION EXPLICIT ; Generate errors on variable typos
;
.Set CabinetNameTemplate=MY_TEMPLATE_2013.WSP ; The name of the WSP file
.set DiskDirectoryTemplate=CDROM ; All cabinets go in a single directory
.Set CompressionType=MSZIP ;
.Set Cabinet=on ;
.Set Compress=on ;
.Set DiskDirectory1=. ; Use the specified directory for the output CAB file
;
;*** Disable size limits for wsp (cab) files ;
;
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
;
;*** Files to zip ;
;
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\1033\XML\WEBTEMP_MySP.XML" "1033\XML\WEBTEMP_MySP.XML"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\sitetemplates\MySPSTS\default.aspx" "MySPSTS\default.aspx"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\sitetemplates\MySPSTS\MySP.master" "MySPSTS\MySP.master"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\sitetemplates\MySPSTS\xml\ONET.XML" "MySPSTS\xml\ONET.XML"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\IMAGES\MySP\bandeau_accueil.gif" "IMAGES\MySP\bandeau_accueil.gif"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\IMAGES\MySP\MySPSiteTemplatePrev.png" "IMAGES\MySP\MySPSiteTemplatePrev.png"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\IMAGES\MySP\MySPSiteTemplatePrev.png.old" "IMAGES\MySP\MySPSiteTemplatePrev.png.old"
"C:\TOOLS\SharePoint_Migration\MAKECAB\15\template\IMAGES\MySP\sgsfeatureicon.gif" "IMAGES\MySP\sgsfeatureicon.gif"
"C:\TOOLS\SharePoint_Migration\MAKECAB\manifest.xml" "manifest.xml"
;
;*** The end ; Can be launched via the command: makecab /F makecab.ddf
Il ne vous reste plus qu’à recréer un fichier PowerShell similaire au précédent CMD pour 2010 tel que :
makecab /F makecab.ddf
Uninstall-SPSolution -Identity MY_TEMPLATE_2013.WSP -CompatibilityLevel All
PING 1.1.1.1 -n 1 -w 30000
Remove-SPSolution -Identity MY_TEMPLATE_2013.WSP -Force -Confirm:$false
Add-SPSolution -LiteralPath "C:\TOOLS\SharePoint_Migration\MAKECAB\MY_TEMPLATE_2013.WSP" -Confirm:$false
Install-SPSolution -Identity SGS_MY_2013.WSP -GACDeployment -CompatibilityLevel All -Confirm:$false
Ceci une fois exécutée vous permettra d’avoir une solution propre pour votre migration (pour ce qui est des modèles de sites).
Conclusion
Cette logique peut aussi être utilisée pour les feature simples, les modèles de listes ou de documents, …
En revanche, si vous avez des composants utilisant du code .NET avancé, vous devrez passer par du développement et donc Visual Studio.NET deviendra l’outil de prédilection.
Romelard Fabrice [MBA]
Commentaires
Enregistrer un commentaire