Cita de: Francisasdasd en 18 Junio 2012, 16:52 PM
Tengo una duda, cuantos son los archivos que es capaz de comprmir y actualizar sin que el programa colapse?.
Y si por ejemplo el servidor donde estan alojadas las updates se cae, o se cae la conexión, el programa dará un mensaje de error o se quedará pegado?
Quiero aclarar que son solo preguntar mas no criticas ni nada por el estilo.
Saludos, muy buen aporte
Hasta donde probe es capaz de comprimir o descargar mas de 2mil archivos sin colapsar..., en caso de que el servidor donde estan los updates no este disponible el programa muestra en el estado que no se ha podido conectar al servidor.
Cita de: 79137913 en 18 Junio 2012, 18:05 PM
HOLA!!!
Consulta como analiza si son los archivos o estan actualizados?
Hace un hash del archivo en la pc y lo compara con el hash de el de internet, si es asi deberia bajar el de internet para calcular su hash y eso no seria practico...
Osea, yo tengo en mi pc programa V1 y en el server tengo Programa V2...
Suponiendo que los dos se llamen a.exe como va a saber tu actualizador si el subido a internet es actualizado o no?
Y suponiendo que le coloques nombres distintos y el user haya puesto un acceso directo a nuestro exe, al bajarse el exe 2 el user clickea el acceso directo al exe 1 y va al exe 2 o al 1?
Son las dudas que me surgen sin probar ni descargar el soft...
Espero aclaraciones XD
GRACIAS POR LEER!!!
Fijate el programa funciona de la siguiente Manera: Nosotros ( el programador de la aplicacion ) nos encargamos de realizar todos los cambios que queramos en nuestro programa, una vez nosotros terminamos, queremos que todos nuestros clientes tengan la version que acabamos de programar.
Para esto nosotros ejecutamos el Actualizador.exe con el parametro "GenerateUpdateList", y nos generara el archivo "UpdateList.zip" que no es mas que un archivo de texto comprimido que contiene todos los hash MD5, Tamaño y Rutas de cada uno de los archivos de nuestra aplicacion. Una vez generado el archivo debemos subirlo junto con todos los archivos actualizados de nuestra aplicacion al host de almacenamiento, despues de esto los archivos actualizados estan en el host.
Ahora nuestros clientes solo deben ejecutar el archivo Actualizador.exe (o simplemente podemos programar nuestra aplicacion para que llame al actualizador automaticamente), para que se les actualize su aplicacion con la que nosotros acabamos de subir al host. ¿Como lo hace?, simple, el actualizador descarga el archivo UpdateList.Zip, en este se encuentran todos los hash MD5 de los archivos actualizados de modo que no tengo que bajarlos todos para luego sacarle el hash, una vez descargado el programa compara los hash de cada archivo almacenado en la pc cliente con el hash almacenado en el servidor de actualizaciones (UpdateList.Zip) y si encuentra que uno de los hash son diferentes o simplemente en el servidor de actualizaciones hay archivos que no hay en la maquina cliente entonces los descarga. De este modo cuando el actualizador.exe termina, la aplicacion esta actualizada a la misma que nosotros subimos al host.
En cuanto al caso1: Aunque 2 aplicaciones se llamen igual, para que su hash sea igual deben tener el mismo contenido, si alguno de ellos es modificado en lo mas minimo su hash cambia, por lo tanto si en el host hay un archivo con un hash diferente al de la pc cliente, lo descarga automatico.
En cuanto al caso2: No es lo ideal cambiar el nombre de la app principal, aunque en el caso de que se haga el acceso directo del usuario seguiria apuntando a la aplicacion vieja...
Cita de: s00rk en 18 Junio 2012, 20:47 PM
La mejor forma a mi parecer es que el Actualizador descargue un XML con los que se deseean actualizarCódigo (xml) [Seleccionar]<UPDATES>
<File nombre="a.exe">
<MD5>Aqui MD5 de a</MD5>
</File>
<File nombre="b.exe">
<MD5>Aqui MD5 de b</MD5>
</File>
</UPDATES>
Y pues ya el programa descarga ese archivo del servidor y lee los nodos y ya lee el atributo nombre y compara su md5 con el que esta en la carpeta del programa y si es diferente actualiza y sino pues lee el siguiente nodo.
A mi parecer seria lo mas sencillo y eficiente.
----
EDIT
Descargue el src y me dice que falta el modulo "Mod_ini.bas"
El actualizador hace mas o menos eso que acabas de plantear pero con un archivo plano.
Ya acomode el link con todos los modulos...
Saludos!