Programador sorprendete con STSDev viendo como crear un paquete WSP para aprovisionar logotipos en SharePoint

Durante una implementación donde se estima la creación inicial de unas 220 colecciones de sitio nuestro flamante administrador de la granja creó unas plantillas de sitio para las diferentes necesidades de colaboración y comunicación que la plataforma SharePoint estará soportando. Lo hizo mediante SharePoint Designer 2010 exportando como WSP la plantilla. Todo bien, pero al revisar las plantillas encontré buenas y no tan buenas ideas. Me concentraré en las no tan buenas, sucede que el logotipo de esta empresa lo estaba almacenando dentro de la biblioteca de activos “Assest Library” y después referenciando en las opciones de Title, Description and Icon donde podemos poner el nombre del sitio, la descripción y la imagen, nuestro amigo incluso ya había probado que al usar la plantillas para crear un nuevo sitio la URL automáticamente se estaba actualizando y siempre apuntaba a la URL del sitio recién creado haciendo referencia al logotipo almacenado en la librería de activos.

Todo bien, pero no!. Le ayudé a crear 5 sitios más y le pedí que corriera un crawl incremental. Posteriormente al terminar de ejecutase hicimos una búsqueda como la siguiente pollolocologo.jpg ¿qué cree usted mi estimado lector que nuestra página de resultados mostró? Pues sí, un bonche de resultados haciendo referencia a la imagen almacenada en cada uno de los sitios creados y si multiplicas eso por las 220 colecciones de sitios planeadas pues nada más imagine usted los resultados de las búsquedas cuando el término de búsqueda incluya la palabra “polloloco”.

Rápidamente di la sugerencia que deberíamos de encontrar un lugar donde almacenar esta imágenes o recursos institucionales de propósito general y la respuesta de nuestro amigo fue la correcta, sugirió el 14 hive o más bien dicho la ruta SharePoint “C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEIMAGES” , así que para pronto sugirió copiar manualmente los archivos en la ruta previamente mencionada lo cual en mi cabeza sonó una campana de alerta como si estuviera en un concurso de la televisión tipo “100 mexicanos dijeron” respondiendo erróneamente.

Procedí a comentar que manualmente no deberíamos de moverle a esta importante ruta de archivos, que existían mecanismos para hacer llegar los archivos a la ruta correspondiente de forma segura, en todos los servidores de la granja y además sin intervención manual. La respuesta fue construir una característica “feature” empaquetado en un WSP para el aprovisionamiento de estos archivos.

Solución? Descargué el instalador de la utilería STSDev versión 1.4 creada por colegas MVPs en SharePoint. Esta utilería te permite elegir el tipo de proyecto SharePoint que quieres crear con la finalidad de generarte un proyecto de Visual Studio con las utilerías, carpetas y archivos necesarios para generar un paquete WSP de SharePoint, lindo no? Claro que ocuparemos Visual Studio para generar el WSP y en ese sentido cualquier versión express arriba de 2008 puede servir ya que STSDev genera un proyecto de tipo Class Library capaz de funcionar incluso fuera de un servidor Windows Sever 2008 R2 con SharePoint instalado, o yeah!

Como vemos en STSDev seleccionamos las distintas plantillas de solución existentes, la versión de Visual Studio, te auto genera el archivo .snk y al dar clic en el botón Create Solution te crea una carpeta donde deposita la solución y los archivos. Después usando Visual Studio abres la solución y a partir de ahí sigues trabajando. En mi caso, use Visual Studio 2012 Express for Windows Desktop el cual tuvo que hacer un proceso de migración de mi solución recién creada.

Ya dentro de Visual Studio simplemente agregamos las imágenes o recursos que consideramos de propósito general que queremos poner en SharePoint , hay que ser cuidadosos con los archivos manifest.xml y solutionpackage.ddf asegurándonos que los nombres de nuestros archivos depositados en la carpeta RootFileTEMPLATEIMAGESPOLLOLOCOBranding sean los mismos a los que hacen referencia .

Al terminar complemente seleccionamos BUILD y RE BUILD SOLUTION del menú principal, si analizamos el Output Windows encontramos lo que realmente sucedió.

1>—— Rebuild All started: Project: POLLOLOCOBranding, Configuration: DebugBuild Any CPU ——

1>C:windowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(1578,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly “Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL”. Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.

1> POLLOLOCOBranding -> C:UsersC04125DownloadsPOLLOLOCOBrandingPOLLOLOCOBrandingbinDebugPOLLOLOCOBranding.dll

1> Refreshing Deployment Files…

1>

1> STSDEV – Simple Tools for SharePoint Developers

1> Version: 1.4.0.0

1> Refreshing Solution Package Files

1> Current Solution Name:

1> Current Solution Directory:

1> Refreshing deployment files…

1> Rebuilding DeploymentFilesmanifest.xml

1> Rebuilding DeploymentFilesSolutionPackage.ddf

1> Deleting Solution Package File…

1> Building Solution Package (Debug Version)

1> Cabinet Maker – Lossless Data Compression Tool

1>

1> Parsing directives

1> Parsing directives (DeploymentFilesSolutionPackage.ddf: 1 lines)

1> 3,355 bytes in 3 files

1> Executing directives

1> 0.00% – manifest.xml (1 of 3)

1> 0.00% – IMAGESPOLLOLOCOBrandingBinoculars32.gif (2 of 3)

1> 0.00% – IMAGESPOLLOLOCOBrandingCantine32.gif (3 of 3)

1> 100.00% – IMAGESPOLLOLOCOBrandingCantine32.gif (3 of 3)

1> 0.00% [flushing current folder]

1> 94.33% [flushing current folder]

1> 4.20% [flushing current folder]

1> 100.00% [flushing current folder]

1> Total files: 3

1> Bytes before: 3,355

1> Bytes after: 3,227

1> After/Before: 96.18% compression

1> Time: 0.03 seconds ( 0 hr 0 min 0.03 sec)

1> Throughput: 112.98 Kb/second

1> Copying WSP file to CAB

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

 

Y pues el resultado es nuestro flamante WSP el cual podemos implementar en SharePoint.

Copiamos nuestro WSP y dentro de algún servidor de la granja corremos el SharePoint 2010 Management Shell y ejecutamos el siguiente comando de powershell:

Add-SPSolution –LiteralPath d:scriptssolutionsPOLLOLOCOBranding.wsp

Ya dentro del Central Administration dentro de System Settings y despues Manage Farm Solution encontramos nuestro WSP listo para deployarse. Damos clic y seleccionamos Deploy, esto aprovisiona en todos los servidores de la grana los archivos de nuestro WSP en la ruta “C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEIMAGESPOLLOLOCOBranding”.

Ahora si en nuestros sitios en vez agregamos la URL /layouts/images/pollo/pollologo.jpg

 

 

 

 

 

 

 

Originalmente publicado en msmvps.com

Publicado por

Haaron Gonzalez

Consultor de tecnología de la información dedicado a entregar soluciones de misión crítica para organizaciones donde la colaboración, la comunicación y el conocimiento son su inversión estratégica. Reconocido como Microsoft Most Valuable Professional en ASP / ASP.NET desde 2005 y SharePoint Server desde 2009. Interés: Satisfacción del Cliente, Excelencia Operacional, Desarrollo de Personas, Ingeniería en Pre-Ventas Especialidades: Colaboración, Gestión de Contenidos Web, Gestión del Conocimiento, Gestión de Contenidos Empresariales, Gestión de Formularios, Intranet, Extranet, Portales, Implementaciones de entornos on-premises de SharePoint, Arquitectura de soluciones, Soporte Especializado en SharePoint y Office 365 Tecnologías: SharePoint todas las versiones, Office 365, Nintex, DocuSign, Sharegate, PowerApps, Flow, SPDocKit, InfoPath, .NET, C #, JavaScript, CSS, Skeleton Framework, Office 365 PnP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *