Pues bien la
gran diferencia de las aplicaciones de Windows Forms con las aplicaciones web
es que si tienes una aplicación web y tienes que modificarla o actualizarla el proceso es
mucho más simple ya que modificas el archivo que tienes que cambiar en local y lo vuelves a subir al
servidor o lo modificas directamente en el servidor y una vez hecho esto tus cambios estarán disponibles al momento para
todos los usuarios que se conecten a tu servidor. En cambio en las aplicaciones
para Windows Forms hay que actualizar los archivos instalados en cada ordenador
y este proceso puede ser más costoso.
Pues bien
voy a partir de un simple formulario con 3 cajas de texto y un botón, para sumar el contenido de las cajas de texto y mostar el resultado, nada del otro mundo. Lo que voy a hacer es agregar un nuevo proyecto de instalación, que ya expliqué en un post anterior como se hacía, lo voy a configurar cambiando
algunas propiedades como el nombre del autor, el nombre del producto y que me
desinstale las versiones anteriores de la aplicación y además voy recordar como
añadir accesos directos. Pues bien una vez generado el proyecto voy a explicar cómo
distribuir la aplicación para que el cliente la instale en su ordenador. Hasta
aquí nada nuevo, lo nuevo será explicar cómo hacer cambios en la aplicación y
distribuirla para que cuando se instale en el ordenador del usuario final
desinstale la versión anterior, eso sí sin borrar archivos como bases de datos
y demás información que el usuario haya guardado y no quiera ser borrada, e instale la nueva versión
actualizada.
Los puntos más interesantes es que si en el proyecto de instalación que creas cambias la propiedad 'RemovePreviousVersion' a True, el instalador cuando detecte una versión anterior de la aplicación no la va a desinstalar automáticamente si en la propiedad 'Product Code' el código es el mismo. Te dirá que has de ir a 'Agregar y quitar programas' para desinstalarla tu manualmente y el programa no continuará. Si el 'Product Code' no es el mismo no tenemos garantias que actualize todos los ficheros de la aplicación a menos que nos descarguemos el programa Orca.msi y nosotros modifiquemos el archivo .msi añadiéndole a la table 'property' la propiedad REINSTALLMODE y el valor amus. Lo mismo también se puede hacer modificando el archivo .msi desde la consola de MSDOS y escribiendo msiexec.exe /i [nombre del archivo].msi REINSTALLMODE=amus y pulsar intro.
Otro punto interesante es el hecho que queramos que algunos archivos de la aplicación no se borren cuando se desinstale, como pueden ser bases de datos -a menos que hagamos una copia de seguridad antes-, archivos de configuración, etc. Para ello si estoy en mi proyecto de instalación, en este caso estoy en los 'Archivos de contenido' busco la propiedad Permanent y cambio el valor a True y con eso ya lo conseguimos.
Para
explicar todo esto cuelgo el siguiente vídeo donde todo quedará más claro y verás que es mucho más sencillo de lo que parece.
Bueno ya sé
que he estado sin colgar nada durante bastante tiempo básicamente por motivos
de mucho trabajo y de estudios pero he querido retomar un poco las
publicaciones en este blog para ir colgando cosas interesantes y quiero empezar
dentro de poco a explicar no sólo como crear aplicaciones de escritorio sino
también sitios web, ya sea aspx o php-mysql, que son las 2 tecnologías que más
estoy usando en los últimos meses de trabajo.
Estimado Raul he aplicado lo sugerido por ti al utilizar Orca, me funciona las actualizaciones en windows xp pero con windows 7 me pide desinstalar la version anterior, que me puedes sugerir, cordiales saludos Javier Leon desde Ecuador
ResponderEliminarHola el problema es que este tipo de proyecto de instalación tiene algunos bugs, como por ejemplo cuando trabajas con una aplicación con una base de datos y no quieres que te la sobreescriba durante el proceso de actualización. Yo he estado probando cosas, modificando el valor de la propiedad [UpdateCode] del proyecto de instalación y en las propiedades de la aplicación la información de ensamblado, cambiando cambiando la versión, pero siempre me he encontrado con problemas a la hora de crear un actualizador compatible con todas las versiones de windows.
ResponderEliminarUna solución es pasarse al InstallShield o usar programa de instalación equivalente como SetupFactory, Inno Setup o NSIS
Saludos,