Actualizando un proyecto

General questions about NeoBook

Moderator: Neosoft Support

Locked
User avatar
Dixan
Posts: 54
Joined: Sat May 14, 2016 2:48 pm

Actualizando un proyecto

Post by Dixan »

¿Existe alguna manera para actualizar un proyecto que uno haya hecho y no tener que sustituir el anterior por el nuevo? por ejemplo al estilo delas base de atos de los antivirus
Dix@n
User avatar
CN_Iceman
Posts: 300
Joined: Tue Mar 01, 2011 11:04 am
Location: España
Contact:

Re: Actualizando un proyecto

Post by CN_Iceman »

¿Te refieres a actualizar el EXE de tu aplicación parcheando?
Yo creo que esa opción sería demasiado complicada.

Lo que yo hago para que mis programas se actualicen automáticamente es lo siguiente.
- En mi servidor tengo un archivo de texto llamado "Version.txt" que incluye la última versión del programa.
- El programa al ejecutarse compara su versión, con la que hay en el servidor. Así sabe si necesita actualizarse.
- Para la actualización, se descarga el nuevo ejecutable con otro nombre.
- Hago un HASH MD5 del nuevo ejecutable y lo comparo con el que previamente le hice antes de subirlo a mi servidor. Esto es para comprobar que la descarga es correcta.
- Desde dentro del programa, creo un archivo de proceso por lotes (.BAT) cuya función es matar el proceso de mi programa, borrar el ejecutable, copiar la actualización con el nombre de mi programa y ejecutarlo de nuevo.

De esta forma, consigues una actualización automática y que tu programa se ejecute de nuevo ya actualizado.

Aquí te pongo el código que yo uso. Por supuesto faltan cosillas que uso como una custom window con una barra de proceso, un timer (en donde se ejecuta un código para indicar el tiempo que queda para descargar la actualización, etc...), pero lo importante está aquí. Puedes adaptarlo como quieras.

Code: Select all

.Prepara los datos
SetVar "[DirNombreExe]" "[CommandLine]"
ExtractFileName "[DirNombreExe]" "[NombreExe]"
ExtractFilePath "[DirNombreExe]" "[Carpeta]"

SetVar "[Barra_de_Estado]" "Descargando nueva versión de [Nombre_Programa]..."
DownloadFile "http://www.miservidor.es/ACTUALIZACION.ice" "[PubDir]ACTUALIZACION.ice" "HideProgress+Async"

SetVar "[Barra_de_Estado]" "Verificando integridad del archivo..."
GoSub "Comprueba_MD5"
   If "[MD5_Igual]" "<>" "SI"
      MessageBox "ERROR: Archivo descargado incorrecto." "El archivo de actualización está corrupto o no se ha descargado correctamente.||¿Quieres intentar de nuevo la descarga?" "SI|NO" "[SINO]"
      If "[SINO]" "=" "1"
         GotoLine "Inicia_Descarga_actualizacion"
      Else
          ClearVariables "[Barra_de_Estado],[Estado]"
          CloseCustomWindow "Ventana_Actualizacion"
          Return
      EndIf
   Else
       GotoLine "Continua_con_actualizacion"
   EndIf

:Continua_con_actualizacion
   SetVar "[Barra_de_Estado]" "Preparando actualización..."
   .Escribe el BAT
   FileWrite "[PubDir]Reinip.bat" "All" "start /B /WAIT taskkill /f /im [NombreExe]"
   FileWrite "[PubDir]Reinip.bat" "Append" "start /B /WAIT timeout 2"
   FileWrite "[PubDir]Reinip.bat" "Append" "DEL /Q /F [#34][DirNombreExe][#34]"
   FileWrite "[PubDir]Reinip.bat" "Append" "start /B /WAIT timeout 1"
   FileWrite "[PubDir]Reinip.bat" "Append" "COPY [#34][Carpeta]ACTUALIZACION.ice[#34] [#34][DirNombreExe][#34]"
   FileWrite "[PubDir]Reinip.bat" "Append" "start /B /WAIT timeout 1"
   FileWrite "[PubDir]Reinip.bat" "Append" "DEL /Q /F [#34][Carpeta]ACTUALIZACION.ice[#34]"
   FileWrite "[PubDir]Reinip.bat" "Append" "[#34][DirNombreExe][#34]"

   .Ejecuta el BAT
   SetVar "[Barra_de_Estado]" "Cerrando programa y ejecutando actualización automática..."
   Delay "1500"
   CloseCustomWindow "Ventana_Actualizacion"
   Run "[PubDir]Reinip.bat" "" "RunOnce+Hidden" "" ""
   Return
Else
    .No se ha encontrado el archivo ACTUALIZACION.ice
    AlertBox "ERROR de actualización" "No se ha establecido enlace con el servidor de actualización|o bien, no se ha encontrado el fichero de actualización necesario.||Inténtalo de nuevo más tarde."
    CloseCustomWindow "Ventana_Actualizacion"
    Return
EndIf

Greetings/Saludos, Jose.
www.icemansoft.es
User avatar
Danito
Posts: 57
Joined: Thu Mar 11, 2010 7:07 pm

Re: Actualizando un proyecto

Post by Danito »

También puedes guardar tu código como una función de Neobook en la misma carpeta del ejecutable y la llamas con el comando Call, así solo tendrías que reemplazar ese archivo de texto, puedes guardarla con alguna extensión propia y ocultarla para que el usuario no la modifique por error.
User avatar
Wrangler
Posts: 1531
Joined: Thu Mar 31, 2005 11:40 pm
Location: USA
Contact:

Re: Actualizando un proyecto

Post by Wrangler »

Is the english forum now a spanish forum?
Wrangler
--------------
"You never know about a woman. Whether she'll laugh, cry or go for a gun." - Louis L'Amour

Windows 7 Ultimate SP1 64bit
16GB Ram
Asus GTX 950 OC Strix
Software made with NeoBook
http://highdesertsoftware.com
User avatar
CN_Iceman
Posts: 300
Joined: Tue Mar 01, 2011 11:04 am
Location: España
Contact:

Re: Actualizando un proyecto

Post by CN_Iceman »

Wrangler wrote:Is the english forum now a spanish forum?
Sorry Wrangler, the question was made in Spanish so I wrote in Spanish too.
I think that we must move this thread to the Spanish side.
Greetings/Saludos, Jose.
www.icemansoft.es
User avatar
Dixan
Posts: 54
Joined: Sat May 14, 2016 2:48 pm

Re: Actualizando un proyecto

Post by Dixan »

Sorry to post it in spanish, Danito could you explain me how to do what you suggest?
Dix@n
Locked