martes, 21 de febrero de 2012

ShortCut WebApplication Installer Action

Hoy les comparto la manera de crear desde el Instalador Accesos directos para nuestras Aplicaciones web, usando acciones personalizadas de instalación, para lo cual les expongo las principales consideraciones para lograr configurar nuestro instalador y de paso aprender un poco más de este tema.

como no es tema principal pero es indispensable para nuestro conocimiento, les comparto este blog que les dará una idea si aún no tienen el proyecto de instalación, pero igual hay muchas otros tutoriales googleando.

Comenzaré explicando el contexto del problema:
Tengo una aplicación web Empresarial, la cual quiero que una vez instalada en el cliente, me genere una carpeta con mi producto y dentro de ella un link que me permita acceder a ella directamente. Suena fácil, pero lo cierto es que el cliente puede modificar la ubicación de nuestro producto durante la instalación, por lo cual el acceso directo debe ser creado al momento de la instalación.

Lo primero que haremos será adicionar una carpeta importante en el sistema de archivos de nuestro proyecto de instalación; para acceder le damos click derecho en el proyecto y seleccionamos Ver => Sistema de Archivos. obtendremos algo como esto:


Ahora adicionamos la carpeta que me permitirá acceder desde "Inicio Windows" a nuestro producto. Para esto le damos click derecho en la raiz de nuestro sistema de archivos y seleccionamos la opción "Menu programas de usuario". Dentro  de esta carpeta creamos la carpeta de nuestro producto "PatitoSoft". Es importante que adicionemos algún archivo para que al instalar el producto se cree la carpeta, pues si esta se encuentra vacía, no se va a crear en nuestra lista de programas. (yo usé un link a nuestra página principal).

Ahora vamos al tema de configurar la creación de nuestro acceso directo, para lo que necesitamos adicionar una clase especial para tal acción "INSTALLER CLASS". Esta clase se adiciona en la raiz de nuestro PROYECTO WEB, "NO EN EL INSTALADOR", esta clase nos permite adicionar propio código durante la instalación.

Al cargar la clase obtenemos una función por defecto la cual podemos eliminar y añadimos el siguiente código, que nos va a permitir obtener información de la instalación, la cual nos va a permitir crear nuestro acceso directo:


 El "Context.Parameters" son parametros que debemos capturar antes de lanzar nuestra instalación, definiendolos en nuestro proyecto de instalación de la siguiente manera:

En la nuestra "carpeta de aplicación web" debemos tener asociado el resultado de nuestro proyecto web, entonces vamos a la opción de Acciones personalizadas de este proyecto, dando click derecho en el proyecto de instalación y seleccionamos Ver => Acciones Personalizadas.

En la carpeta instalar, también debemos tener asociado el resultado principal de nuestro proyecto web. Lo seleccionamos y vamos a sus propiedades.

En la propiedad CustomActionData adicionamos lo siguiente: 
/TargetDir="[TARGETDIR]\" /TargetVDir="[TARGETVDIR]" /StartMenuFolder="[StartMenuFolder]\" Esto nos va a permitir obtener los valores desde la clase installer a través del context.parameters. para aprender un poco más de los parametros de contexto, veamos este link

Las líneas de código "System.Diagnostics.Trce.WriteLine", nos permite capturar desde el DebugView los mensajes que le definamos.

Una vez definidas las variables, lo siguiente que hace este código es buscar la carpeta "PatitoSoft\Producto", dentro de archivos de programa, es decir, va a buscar la carpeta de nuestro producto y allí va a crear nuestro acceso directo, en nombre de nuestro directorio virtual y la página que definamos como inicial.

Ahora, ya tenemos un instalador que nos crea un acceso directo a nuestra aplicación web y nos ubica nuestra aplicación entre el directorio de programas disponibles de windows.

Pero el cliente también necesita desinstalar, o llegado un error de instalación debemos hacer RollBack de la creación del acceso directo, para que nuestra desinstalación sea limpia. Para esto usamos los siguientes métodos que harán el trabajo.





Este es el blog que me sirvió de guía para poder resolver el problema de instalación. Espero que sirva de ayuda y sea un poco más claro que el original.


lunes, 6 de febrero de 2012

BATALLA NAVAL .NET REMOTING

Hoy voy a compartirles un proyecto hecho con .Net Remoting, se trata del famoso juego de Batalla Naval. Este proyecto no está terminado del todo, pero todo el core esta hecho y podemos implementarle fácilmente su versión web e integrarla con la windows que es la original, pues su arquitectura permite la comunicación entre las dos plataformas.

Estos son los pantallasos de lo que vana a encontrar, además de una pequeña explicación del código y algunas ideas que plantee para darle un toque distinto a este juego. Es decir que tenemos otras opciones más interesantes para jugar, y claro el código lo comparto con el fin de permitir que otros "curiosos" o a quién le haga falta para un trabajo de la U, aprenda y le aporte un poco.

Mis ataques certeros

Mis ataques fallidos

mis naves

Para adelantarles un poco, y aprovechando la vista, tenemos el área de enemigos, de estado y de vista de ataques, además de un pequeño chat para adicionarle un toque de realismo al asunto y crear expectativa en tus ataques.  Por cuestiones de tiempo no lo terminé, pero la idea es tener dos tipos de juegos, uno por grupos y otro individual "todos contra todos". Es decir que la primera opción seria unirme a un grupo y la segunda es el juego normal, pero con muchos enemigos.

Este es el documento del juego, aquí encontraran una explicación un poco mejor de lo que se esperaba, además les comparto el código en el siguiente link (vs 2010 c#).

Espero lo disfruten, aprendan y enseñen con este material.



jueves, 2 de febrero de 2012

Compiler Error Message: CS0433

Este error "CS0433" se presenta al publicar un proyecto en nuestro IIS, y se debe a que al publicar algunas referencias se quedan pegadas y si le sumamos a esto que hicimos algún cambio de referencias, posiblemente obtendremos que al publicar la aplicación esta se encuentre con más de una referencia para un mismo ensamblado. Entonces llegan las dudas y las soluciones sacadas de películas de terror.

Me dí cuenta que en el bin de mi proyecto, me referenciaba los mismos ensamblados pero con las versiones anteriores, es decir los mismos antes de cambiarlos, entonces borré el bin y generé una vez más, pero eso no sirvió de nada. La solución es muy sencilla, me fuí al IIS y borré el sitio, luego en mi proyecto le dí la opción en propiedades del proyecto de generar carpeta para el sitio, y compilé una vez más!!!.   y perfecto, soluciones tontas para problemas estúpidos.

//Espero les sirva...