| |||
Actualizar Ejecutable Hola a todos, le dejo una inquietud y espero me puedan ayudar, meren tengo un sistema comercial funcionando en red, el problema que me surje es que cuando tengo que modificar el sistema y actualizar los ejecutables, tengo que pedirle a los usuarios que cierren el sistema para asi poder actualizar el sistema, y se torna tedioso porque tienen que dejar de trabajar, cerrar el sistema y volver a abrirlo, la pregunta es... existe alguna manera de Actualizar Los Ejecutables sin la necesidad de que los usuarios del sistema lo cierren y lo tengan que volver a abrir???.....desde ya muchas gracias |
| ||||
Respuesta: Actualizar Ejecutable Existe un truco, que por lo menos en XP funciona y es el siguiente: Tengo una aplicación ejecutándose en multipuesto que se llama Programa.exe, entonces lo que hago es lo siguiente: Renombrar el Programa.exe en Programa.$$$ y de momento XP traga, no pasa nada, te permite hacerlo sin mayor problema. Después copio en la carpeta el nuevo Programa.exe y a partir de ahí, cada usuario que sale y vuelve a entrar dispone sin darse cuenta de la nueva aplicación. Tengo en mente trabajar sobre esta idea para evitarme problemas, quizás el EXE debería comprobar en algún momento si ha cambiado la Fecha/Hora de Programa.exe con App ya que de ser así, significa que ha sido modificado. Al iniciarse nuevamente Programa.exe podría intentar borrar Programa.$$$ y si no puede no pasa nada, alguno de ellos lo conseguirá cuando Programa.$$$ no esté en uso de ninguno. A ver si entre todos le damos vueltas a esta idea y conseguimos una rutina que lo haga mas facil. Saludos |
| |||
Respuesta: Actualizar Ejecutable No me quedó muy claro el tema pero intentaré resolverlo, de todas maneras leagradezco mucho que hayan contestado, intenteré realizar sus sujerencias, muchas gracias de nuevo, si tienen algun otro aporte o algo tambien les agradezco referido a ese tema |
| ||||
Respuesta: Actualizar Ejecutable Erbuson No sabía eso de la extensión $$$ (como tantas otras cosas) y me ha parecido muy interesante. Y funciona (lo digo para los incrédulos). PD: También me he guardado tu conversión de importes como curiosidad, aunque aún no la he probado. Saludos
__________________ No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza! |
| ||||
Respuesta: Actualizar Ejecutable Hola PKJ, lo de la extensión $$$ es un ejemplo, cualquier cambio de nombre funciona, intuyo que la razón pudiera ser porque Windows no carga Totalmente en memoria el programa y conserva en sus entrañas la dirección del mismo para ir accediendo a este a medida que lo necesita por razones de optimizar memoria aunque ya digo que esto nos es mas que una suposición. De todos modos después de haber leído muchas veces tus mensajes y haber visto tus ejemplos no dudo de que en breve se te ocurrirá alguna solución práctica porque por lo que he podido comprobar en el breve tiempo que llevo con vosotros imaginación no te falta. Si tienes alguna idea estamos en contacto, lo que yo estoy pensando es que podría haber una rutina Public que compruebe la existencia de App.Name .$$$ o algo similar y si existe y su fecha no coincide con la del programa que está en memoria avisar de que tienes una actualización. En fin es una idea a la que le doy vueltas pero no acabo de enganchar todos los cabos. Saludos
__________________ Agradecer a quien te enseñó, es enseñar lo que de él aprendiste. Recuerda: Decir gracias, poco cuesta y mucho vale ... |
| ||||
Respuesta: Actualizar Ejecutable Saludos compañero. La verdad es que no creo que se pueda mejorar mucho lo que ya has comentado tú. Ya que no se puede modificar el exe mientras está en uso, la mejor solución es esa que tu dices. Para saber si hay una actualización imagino que como tu dices bastaría con memorizar la fecha y hora de modificación del app.exename al cargar el programa y en un timer comprobar cada x segundos si ha cambiado. De ese modo puedes avisar de que hay que reiniciar el programa o lo que haga falta según el caso. Ya sea memorizar el estado como dice Culd que hace el firefox o simplemente ejecutar el nuevo exe y cerrar el actual. Al arrancar el programa se elimina cualquier versión $$$ antigua si existe y punto. Me ha parecido un aporte realmente interesante. Por otro lado agradecerte la confianza que demuestras en mi capacidad. La verdad es que soy bastante ignorante pero imaginación si que le hecho. No sé si habrás probado mi reproductor de video con lectura de subtitulos .srt. Está en la sección de audio video y multimedia. Si lo pruebas verás que muy vistoso no es, ni mucho menos perfecto, pero tiene muchas funciones que otros programas no incluyen. Bueno, no me extiendo más. Nos leemos.
__________________ No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza! |
| ||||
Respuesta: Actualizar Ejecutable Parece ser que de esta manera funciona, pero ya se sabe que todos los caminos conducen a Roma Al Iniciar el programa, memorizará la Fecha del EXE que está ejecutanto, despúes con un timer o cuando uno quiera verifica si hay una nueva versión y da el aviso, sale, etc En mi caso, al mantener una Red de usuarios, si los cambios no son muy importantes, simplemente renombraré el .exe original por el .$$$ y pondré el nuevo exe. Los usuarios que entren después de la actualización, intentarán borrar el .$$$ por si ya no está en uso y a medida que salgan y entren estarán actualizados, sólo cuando .$$$ (el primer .exe) no esté en uso será borrado.
Código:
Option Explicit Private Sub Form_Load() NuevaVersion End Sub Private Sub Command1_Click() If NuevaVersion Then MsgBox "Existe una nueva version" End Sub Public Function NuevaVersion() As Boolean Static FechaDelExe As Date On Error Resume Next If FechaDelExe = 0 Then ' La primera vez que se llame a NuevaVersión, memorizará la fecha del EXE FechaDelExe = FileDateTime(App.Path & App.EXEName & ".exe") ' Borrará si puede y existe el .$$$ si alguien lo usa no lo borrará y seguirá Kill App.Path & App.EXEName & ".$$$" Exit Function End If ' Si la fecha guardada y la del exe son diferentes, es una nueva versión If FileDateTime(App.Path & App.EXEName & ".exe") <> FechaDelExe Then NuevaVersion = True End Function
__________________ Agradecer a quien te enseñó, es enseñar lo que de él aprendiste. Recuerda: Decir gracias, poco cuesta y mucho vale ... |
Etiquetas: |