19/12/2007 13:50
El Bruno
[DSL] Desplegando proyectos
Buenas
antes de pasar a temas más complicados como la migración de proyectos a Microsoft Visual Studio 2008, un punto que me quedó pendiente de repasar para los proyectos que trabajen con Domain Specific Language Tools, es el despliegue de estos proyectos. Las Domain Specific Language Tools incluyen un template de proyecto para la distribución de aplicaciones y existen otras opciones muy interesantes como el template que distribuye Clarius.
En este caso, partiré de mi ejemplo anterior y sobre esta solución seleccionaremos la opción de agregar un nuevo proyecto del tipo Domain Specific Language Setup.
Como podremos ver, este proyecto "automáticamente" asume que existen los proyectos iniciales Dsl y DslPackage y genera a partir de los mismos una serie de archivos Xml que son los que se compilan en el instalador final. Estos archivos se compilan utilizando una suite de herramientas para la creacion de instaladores llamada WiX. WiX un proyecto open source y que está alojado en http://win.sourceforge.net. La descarga de las herramientas de WiX, consisten en una serie de ejecutables que procesas estos archivos, los más conocidos e importantes son Candle.exe y Light.exe.
En el caso de un proyecto simple, como es el de este ejemplo, el proyecto generado es lo suficientemente completo como para generar un instalador que abarque todos los módulos que necesitamos. La base de este proyecto es el archivo InstallerDefinition.dslsetup, ya que sobre el mismo trabajan otros archivos .tt para generar la información de compilación.
Sin embargo, existen algunos puntos que se pueden personalizar para lograr un proyecto de despliegue más completo:
- Dentro de los directorios Resources y Files del proyecto de setup se encuentran los archivos de soporte para el instalador, como el header para los formularios del asistente, el archivo de licencia, etc.
- Si nuestro proyecto, requiere además otros archivos, los podremos agregar dentro de la sección <supportingFiles> del archivo principal
<supportingFiles>
<supportingFile name="Readme" filePath="Files\Readme.htm" installShortcut="true" shortcutIconPath="Resources\ReadmeShortcut.ico" openAfterInstall="true" />
<supportingFile name="Sample" filePath="Files\Sample.xlsx" installShortcut="true" shortcutIconPath="Resources\Sample.ico" openAfterInstall="true" />
</supportingFiles>
Por ejemplo el xml anterior, incluye una referencia a un archivo de Excel llamado Sample.xlsx, incluido dentro del proyecto de Setup en el directorio Files y además hace referencia al ícono Sample.ico para mostrar el mismo.
- Si nuestro proyecto, requiere además otros assemblies que sean el resultado de la compilación de otros proyectos en la solucion, los podremos agregar dentro de la sección <supportingAssemblies> del archivo principal
<supportingAssemblies>
<supportingAssembly name="Dsl" project="Dsl" assemblyPath="ElBruno.Dsl15.Dsl.dll"/>
<supportingAssembly name="HelloWorld" project="HelloWorld" assemblyPath="HelloWorld.dll" containsRegistryValues="true" />
</supportingAssemblies>
Por ejemplo el xml anterior, incluye una referencia a la salida de la compilacion de un proyecto llamado HelloWorld, incluido dentro de la solucion de Domain Specific Language Tools.
Personalizado estas y otras opciones, se pueden lograr un proyecto de Setup bastante completo para el despliegue de nuestros DSLs, sin embargo, si la personalización debe ser más potente, recomiendo echarle un vistazo a Software Factory Toolkit de Clarius Consulting. (no entraré en el detalle de la instalación de este producto, ya que podemos encontrarnos un berenjenal interesante de versiones, CTPs, etc. tema para otro post)
Una vez instalado el SFT, deberemos habilitar el package correspondiente para el trabajo con Factorias desde el menú Tools / Guidance Package Manager

A partir de este momento veremos que poseemos una nueva opción desde el menu Add de nuestra solución para agregar un nuevo proyecto de Setup basado en SFT

Cuando seleccionamos este tipo de proyecto, veremos que el asistente solicita que especifiquemos el proyecto que contiene el DSL principal de nuestra solución.

Una vez seleccionado, se creará un nuevo proyecto, que también utiliza WiX para la generación del instalador, pero podremos ver que dentro del mismo la estructura de archivos es diferente y que además los archivos tt, contienen el codigo de generación dentro de los mismos, con lo que podemos "personalizarlos" a nuestro gusto.
Pues bien, como toda extensión de Visual Studio, los clásicos proyectos "Hola Mundo" son muy fáciles de implementar, pero cuando quieres algo más complejo, hay que trabajar un poco más. La base de la generación de instaladores es Wix, y recomiendo echarle un vistazo a http://www.tramontana.co.hu/wix/, y sobre la creación de MSIs automatizados con WiX
Finalmente, si trabajas en un entorno con un buen Team Foundation Server y tienes un servidor de compilación, dentro de MSDN está este excelente artículo http://msdn.microsoft.com/msdnmag/issues/07/03/WixTricks/ que puede servir de base para integrar la compilación frecuente de este tipo de proyectos en un ciclo de vida de desarrollo.
Cuando comience el 2008, comenzaré a postear sobre DSLs y Microsoft Visual Studio 2008 y cómo no !!! sobre Visual Studio Shell 2008 :D
Saludos @ La Finca
El Bruno
Crossposting from
ElBruno.com
Archivado en: Visual Studio,VSTS,DSL Tools
Comparte este post: