Al CAB, aunque lo vistan de Solution, CAB se queda

Uno de los grandes dramas de SharePoint 2003 era instalar código personalizado en otros servidores fuera de las maquinas de desarrollo. Las opciones estaban limitadas a dos: copiar todos los archivos a mano desde un servidor a otro, con todos los peligros que eso conlleva, o hacer un instalador especial (un programa que copie todo en el lugar correcto).


La primera opción en realidad no era una opción. Cuantas veces me ha pasado (y no solamente a mi) que le enviabas toda la retahíla da archivos al cliente, con instrucciones detalladas sobre que archivos en que directorios había que copiar, para luego recibir un teléfono de un cliente enojado porque el asunto no funcionaba (o es que solamente yo tengo clientes disléxicos, eso también puede ser). Luego de perder un montón de tiempo en ir personalmente a ver qué estaba sucediendo, revisar la instalación localmente en los servidores de producción y comprobar que, por supuesto, las cosas no habían sido copiadas correctamente, se venía el trabajo de explicarle muy cuidadosamente al susodicho cliente que simplemente tenía que regresar a la escuela elemental a que le enseñaran a leer de nuevo…


La segunda opción, aunque más segura, también costaba tiempo y esfuerzo… y ponerse a programar aplicaciones de Windows, algo que no se te ocurría hacer desde el tiempo de los dinosaurios…


Los chicos inteligentes de Microsoft se pusieron las pilas y crearon las “Solutions”, una verdadera solución para el problema. Para que después vengan a decir que Microsoft no escucha los clamores de sus pobres usuarios. Si escuchan, sí que lo hacen, créanme, lo único es que son sordos selectivos, que solamente escuchan lo que les interesa, pero que escuchan, escuchan…


Una “Solución” de SharePoint no es más que un archivo comprimido (.wsp) con todos los archivos que quieres instalar metidos en él, y otro archivo “Manifest.xml” que le cuenta a SharePoint a donde tiene que ir a parar cada uno de ellos. Además de que todo va en un solo archivo, el administrador de SharePoint solamente tiene que ejecutar un comando en la herramienta de administración stsadm para instalarlo, y desde la pantalla de Administración Central de SharePoint puede activar la Solución, desactivarla, instalar otra igual con una versión diferente y controlar su uso, todo sin que tenga que copiar archivos independientes.


La Solución principalmente puede copiar archivos a sus sitios correctos (Características, WebParts, Recursos, Site Definitions, etc) e instalar dll’s en el GAC o en un directorio Bin; es posible hacer otras cosas con ellas, como definir las pólizas de seguridad y el registro de controles seguros, pero esto es otra historia.


Volviendo al título, un archivo wsp no es más que un archivo cab con otra extensión. Si no me creen, búsquense algún archivo wsp en el directorio de SharePoint, cámbienle le extensión a cab, y verán que bonito esta por dentro (o sino, léanse el SDK, también está allí explicado). Archivos cab son muy simpáticos, pero no son divertidos para hacer. Desde el sitio de Microsoft se puede descargar el “Cab SDK”, con información sobre como compilar archivos CAB, y un par de herramientas de comando para hacerlos. Pero si tienes que crear una Solución con bastantes archivos, que tienen que ir a parar a diferentes directorios de SharePoint, el comando se convierte en algo así como:


CABARC.EXE -p -P ProjectsTestSolution n C:Solution_Test.wsp C:ProjectsTestSolutionISAPI*.* C:ProjectsTestSolutionManifest.xml C:ProjectsTestSolutionTestWebPart1.dll


(Y esto para solo tres archivos a comprimir). Así que, siguiendo el leitmotiv de “Un buen herrero hace sus propias herramientas”, me he hecho un programa estupendo (“SharePoint Solution Builder”, por eso de que en ingles suena más complicado) que me evita todo el trabajo de pensar (para evitar que se me gasten las pocas células grises que me quedan), y en donde solamente tengo que escoger los archivos, indicar a que directorio tienen que ir, contarle el sitio en donde quiero la solución y él realiza todo el trabajo para mí. El programa lo pueden bajar desde el sitio de descargas de SkunkWorks, http://www.gavd.net/servers/sharepointv3/spsv3_item.aspx?top=5&itm=431.


A propósito, cuando estaba haciendo el programa y rompiéndome la cabeza tratando de usar el “cabinet.dll” que viene con todos los Windows y se encarga de hacer el trabajo, al intentar desensamblarlo sin fortuna, me he dado cuenta que es (probablemente) una aplicación de 16 bits, del año de upa. Aunque, siendo honrados, funciona como un tren, y comprime mucho mejor que zip o rar, así que si no se ha roto, no hay razón para repararlo.


Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

3 comentarios en “Al CAB, aunque lo vistan de Solution, CAB se queda”

  1. Interesante artículo sobre las soluciones para MOSS 2007. He de comentar que he llegado aquí buscando información sobre como desarrollar soluciones (.wsp) para crear plantillas que tengan capa de contenido y lógica que controle la interacción con dicho contenido.

    La verdad es que hace poco me bajé el paquete con 40 plantillas en inglés para MOSS 2007 que están colgadas en la msdn. Algunas de ellas son “Application templates” que están bastante bien.

    Ahora bien, cambiandoles la extensión WSP por CAB se muestra la estructura de la solución. En una primera aproximación, parece que son una mezcla de Features y clases controladoras de eventos.

    He visto algún ejemplo de aplicación de Features, pero las soluciones traen consigo especificaciones de la plantilla (listas, weparts…) Hay algún ejemplo que especifique como se desarrollan este tipo de aplicaciones? Hay alguna plantilla de proyecto para desarrollarlas en Visual Studio?

    Un Saludo,

  2. Hola Aitor,
    El SDK de WSS 2007 (http://msdn2.microsoft.com/en-us/library/ms441339.aspx) tiene alguna información básica sobre la sintaxis (y un par de ejemplos) de Soluciones. En Codeplex hay un proyecto para realizar proyectos de Visual Studio 2005 que creen Soluciones (http://www.codeplex.com/sptemplateland).
    Por otro lado, no solamente archivos wsp son archivos cab por dentro, sino todos los archivos “auxiliares” que utiliza SharePoint, como por ejemplo las plantillas generadas desde SharePoint mismo, y los paquetes creados como respaldo.
    Un saludo.

  3. Gracias por la respuesta. Me he registrado en codeplex y he intentado bajar la plantilla para Visual Studio. Acepto los terminos de licencia y se abre un díalogo que desaparece volviendo el navegador a la página de descargas. Lo intentaré más tarde.

    En cuanto a la extensión CAB, solamente la había utilizado para empaquetar varios Webpart que completaban una aplicación y desplegarlos a la vez en SPS 2003.

    Gracias,
    Un Saludo,

Deja un comentario

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