jueves, 23 de enero de 2014

Crear aplicacion auto actualizable con Visual Studio

Hola de nuevo.

Hoy les voy a mostrar algo que me costo mucho hacer.

Yo tengo escrita una aplicación en VB.NET con Visual Studio 2012. Estoy muy seguro que funciona con cualquier aplicación de escritorio hecha con Visual Studio. La misma aplicación yo hago actualizaciones y revisiones constantemente y varias personas usan esta aplicación. Para no tener que andar instalando una nueva versión del programa cada vez que corrijo o agrego algo, utilice la opción de PUBLICACIÓN del Visual Studio. Ahora la aplicación busca e instala la ultima versión antes de abrirse. A su vez también puede abrirse Off-Line con la ultima versión bajada.

Bueno empecemos.

Los requisitos:
  1. Visual Studio 2012 (es la que uso yo pero seguro en otras es igual o parecido)
  2. La Aplicación lista para compilar.
  3. Servidor FTP (bueno yo lo voy a hacer con un servidor que pago, también se puede hacer con recursos de red, solo para la red local)
El servidor tiene que tener instalado las Exenciones de FrontPage. En caso de no tenerlas pedir a su proveedor del servidor que las instale, yo lo tuve que hacer.

______________________________________________________________________________

Primero lo primero. en el servidor creamos un usuario FTP para el Visual Studio. y le especificamos una carpeta para la instalación de la aplicación. También pueden usar el usuario root o el común y especificar después la ruta.

una vez creado el usuario me quedaría así
Usuario: usuarioInstalador
Pass: passUsuarioInstalador
path: /httpdocs/instaladorPrograma/

entonces cuando habrá el servidor con ftp me lleve directo a esa carpeta
ftp://servidor.com (iniciado con ese usuario) ->  /httpdocs/instaladorPrograma/
______________________________________________________________________________

Ahora yendo al VS vamos a configurar la opción de PUBLICAR.

- En el explorador de soluciones vamos a ir al panel de mi proyecto:

luego en la pestaña de la derecha donde dice PUBLICAR.


   Allí configuramos la 'Ubicación de la carpeta de publicación' con el link FTP que configuramos. (En el botón con putos suspensivos al lado podrán configurar el usuario y contraseña)
y la 'Dirección URL de la carpeta de instalación' que es donde se guardara la pagina donde después instalaremos el programa.

La versión de publicación es irrelevante y se actualiza cada vez que hagamos una publicación

Ahora lo interesante. Abrimos el botón que dice ACTUALIZACIONES y veremos esto:

   allí configuraremos el tema de las actualizaciones automáticas. Como mis actualizaciones muchas veces corrigen errores prefiero que se actualice siempre antes de iniciar la aplicación. y dan aceptar

Listo. Ya esta todo configurado
Lo único que queda por hacer es COMPILAR y PUBLICAR.

guardan todo y en la pestaña de COMPILAR (parte superior) y le dan PUBLICAR.
con eso el VS debe conectarse con el servidor y subir todo.
probablemente les pida de vuelta los datos del usuario FTP.
en este caso: US: usuarioInstalador PASS: passUsuarioInstalador

______________________________________________________________________________

La Instalación

Ahora para instalar esta aplicación deben ir a la pagina donde se publico mediante el protocolo HTTP

en este caso seria así: http://servidor.com/instaladorPrograma/publish.htm 
la pagina publish.htm se crea automáticamente. Eso también se puede configurar para que la cree con otro nombre si quieren.
Y la pagina debería ser algo así:



donde el nombre del publicador y la versión de publicación se puede configurar.

Para instalar simplemente hacen clic en el botón instalar.
se les baja un archivo SETUP.EXE
el mismo lo abren y les instala solo el programa.

Con esto hecho cada vez que abran la aplicación buscara actualizaciones.

Recuerden que el programa se actualizara cada vez que hagan una publicación nueva no con cada compilación (ya sea en DEBUG o RELASE).

Las configuraciones se deberían guardar todas.


Espero que les haya sido de utilidad.

9 comentarios :

  1. Interesante, yo tengo en produccion una app pero en vb6, como podria hacer algo asi, para vb6 app

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Buenas...la verdad es que la explicacion es clara y funciona de 10. Estoy teniendo un problema y quizas puedas ayudarme. Yo estoy desarrollando un sistema para que funcione en distintos clientes, cada uno de ellos con su propia base de datos. Para que cada uno tenga sus propios parametros de conexion, grabo en el config. El problema es que con cada actualizacion se pierden los parametros que indico el cliente. En fin, agradezco de antemano si pudieras orientarme un poco en como resolver el problema. :)

    Dim Config As Configuration = ConfigurationManager.OpenExeConfiguration(Application.StartupPath & "\Sistema.exe")

    Dim Variable As AppSettingsSection = Config.AppSettings

    Try
    Variable.Settings.Item("baseSQLSERVERConnectionString").Value = ("Server=" + _Servidor + "; Database=" + _DataBase + "; User id =" + _UsuarioDB + "; password = " + _PassDB + ";")


    Config.Save(ConfigurationSaveMode.Modified)


    ConfigurationManager.RefreshSection("baseSQLSERVERConnectionString")


    BuscarParametros()

    Return True

    Catch ex As Exception
    Return False
    End Try

    ResponderEliminar
    Respuestas
    1. Hola, Esto esta mas alla del alcance de este post.
      Aun asi, tu problema es donde guardas la configuración. Donde se almacenan. Me parece que estas tratando de guardaras en el mismo directorio que la aplicacion. Y por lo general cunado se actualizan se crea un directorio limpio. Fijate de almacenar las configuraciones o en la nube con algun sistema de cuentas. O en el registro de windows

      Eliminar
  4. Es el único tutorial que he encontrado en la web sobre como publicar el instalador por FTP sin embargo no he podido hacerlo funcionar, podrías detallar el formulario donde se configura la cuenta de FTP (Usuario, Contraseña, Directorio) y si no es mucha molestia, a que te refieres con "EXENCIONES DE FRONTPAGE"?

    ResponderEliminar
  5. No siempre funciona yo utilizo mapas de google y hasta ahi llego todo

    ResponderEliminar