Insercion de exe

Iniciado por softinicio, 22 Septiembre 2010, 04:53 AM

0 Miembros y 1 Visitante están viendo este tema.

softinicio

Buenas noches foreros, soy nuevo en el foro y tengo una idea que me gustaria me regalaran sus opiniones; tengo un negocio personal de desarrollo de software, en el me veo en la obligacion de hacer continuas actualizaciones, por lo cual tengo que estar remplazando el ejecutable cada vez que voy actualizar (es un software de escritorio). El inconveniente esta en que a una de las empresas a la que le vendi mi software es un hotel, y como bien saben, la operacion del hotel no se detiene, entonces cada vez que voy actualizar, me toca sacar al personal, copiar y pegar el nuevo ejecutable, en cada maquina y despues validar que todo puedan seguir trabajando de manera normal(en esto me llevo hasta 14 horas :-\); mi pregunta es, de que manera puedo actualizar un exe sin que el usuario me tenga que prestar su equipo y sin que tengan que cerrar la aplicacion?? He pensado en algo como que, el nuevo exe se vaya actualizando de manera progresiva en la maquina del cliente despues de haberlo dejado en una carpeta como Windows, no se, es algo que se me ocurrio. Agradezco cualquier comentario.... Saludos

Petro_Boca

Cita de: softinicio en 22 Septiembre 2010, 04:53 AM
Buenas noches foreros, soy nuevo en el foro y tengo una idea que me gustaria me regalaran sus opiniones; tengo un negocio personal de desarrollo de software, en el me veo en la obligacion de hacer continuas actualizaciones, por lo cual tengo que estar remplazando el ejecutable cada vez que voy actualizar (es un software de escritorio). El inconveniente esta en que a una de las empresas a la que le vendi mi software es un hotel, y como bien saben, la operacion del hotel no se detiene, entonces cada vez que voy actualizar, me toca sacar al personal, copiar y pegar el nuevo ejecutable, en cada maquina y despues validar que todo puedan seguir trabajando de manera normal(en esto me llevo hasta 14 horas :-\); mi pregunta es, de que manera puedo actualizar un exe sin que el usuario me tenga que prestar su equipo y sin que tengan que cerrar la aplicacion?? He pensado en algo como que, el nuevo exe se vaya actualizando de manera progresiva en la maquina del cliente despues de haberlo dejado en una carpeta como Windows, no se, es algo que se me ocurrio. Agradezco cualquier comentario.... Saludos

el otro dia lei un poco acerca de el "boton actualizar" en los EXE.

lo q hacen es algo asi, (lo q hace el boton)

revisan la web (VAS A NECESITAR UNA WEB), y el boton mira si la "FIRMA", o la "versión" es la misma, y si NO es la misma, se descarga el exe, o directamente el boton TE LLEVA A TU WEB PARA VERIFICAR ACTUALIZACIONES.

P.D:

no creo q puedas actualizar el programa con el mismo PROGRAMA ABIERTO. (a noser q el nombre del EXE cambie, y cuando se abra mate al proceso del programa viejo y balbalbalablbalablabal)

ignorantev1.1

No se, pero creo yo, un programa en ejecucion no se puede modificar...

BlackZeroX

.
PLUGINS, ADDONS...

Dulces Lunas!¡.
The Dark Shadow is my passion.

softinicio

Cita de: Petro_Boca en 22 Septiembre 2010, 05:43 AM
Cita de: softinicio en 22 Septiembre 2010, 04:53 AM
Buenas noches foreros, soy nuevo en el foro y tengo una idea que me gustaria me regalaran sus opiniones; tengo un negocio personal de desarrollo de software, en el me veo en la obligacion de hacer continuas actualizaciones, por lo cual tengo que estar remplazando el ejecutable cada vez que voy actualizar (es un software de escritorio). El inconveniente esta en que a una de las empresas a la que le vendi mi software es un hotel, y como bien saben, la operacion del hotel no se detiene, entonces cada vez que voy actualizar, me toca sacar al personal, copiar y pegar el nuevo ejecutable, en cada maquina y despues validar que todo puedan seguir trabajando de manera normal(en esto me llevo hasta 14 horas :-\); mi pregunta es, de que manera puedo actualizar un exe sin que el usuario me tenga que prestar su equipo y sin que tengan que cerrar la aplicacion?? He pensado en algo como que, el nuevo exe se vaya actualizando de manera progresiva en la maquina del cliente despues de haberlo dejado en una carpeta como Windows, no se, es algo que se me ocurrio. Agradezco cualquier comentario.... Saludos

el otro dia lei un poco acerca de el "boton actualizar" en los EXE.

lo q hacen es algo asi, (lo q hace el boton)

revisan la web (VAS A NECESITAR UNA WEB), y el boton mira si la "FIRMA", o la "versión" es la misma, y si NO es la misma, se descarga el exe, o directamente el boton TE LLEVA A TU WEB PARA VERIFICAR ACTUALIZACIONES.

P.D:

no creo q puedas actualizar el programa con el mismo PROGRAMA ABIERTO. (a noser q el nombre del EXE cambie, y cuando se abra mate al proceso del programa viejo y balbalbalablbalablabal)

Donde encuentro esta web??

softinicio

Cita de: BlackZeroX en 22 Septiembre 2010, 06:33 AM
.
PLUGINS, ADDONS...

Dulces Lunas!¡.

Gracias por sus respuestas. BlackZeroX me podrias regalar un poco mas de información, creo que por ahí va la cosa.

Saludos,

Petro_Boca

Cita de: softinicio en 22 Septiembre 2010, 13:57 PM
Cita de: Petro_Boca en 22 Septiembre 2010, 05:43 AM
Cita de: softinicio en 22 Septiembre 2010, 04:53 AM
Buenas noches foreros, soy nuevo en el foro y tengo una idea que me gustaria me regalaran sus opiniones; tengo un negocio personal de desarrollo de software, en el me veo en la obligacion de hacer continuas actualizaciones, por lo cual tengo que estar remplazando el ejecutable cada vez que voy actualizar (es un software de escritorio). El inconveniente esta en que a una de las empresas a la que le vendi mi software es un hotel, y como bien saben, la operacion del hotel no se detiene, entonces cada vez que voy actualizar, me toca sacar al personal, copiar y pegar el nuevo ejecutable, en cada maquina y despues validar que todo puedan seguir trabajando de manera normal(en esto me llevo hasta 14 horas :-\); mi pregunta es, de que manera puedo actualizar un exe sin que el usuario me tenga que prestar su equipo y sin que tengan que cerrar la aplicacion?? He pensado en algo como que, el nuevo exe se vaya actualizando de manera progresiva en la maquina del cliente despues de haberlo dejado en una carpeta como Windows, no se, es algo que se me ocurrio. Agradezco cualquier comentario.... Saludos

el otro dia lei un poco acerca de el "boton actualizar" en los EXE.

lo q hacen es algo asi, (lo q hace el boton)

revisan la web (VAS A NECESITAR UNA WEB), y el boton mira si la "FIRMA", o la "versión" es la misma, y si NO es la misma, se descarga el exe, o directamente el boton TE LLEVA A TU WEB PARA VERIFICAR ACTUALIZACIONES.

P.D:

no creo q puedas actualizar el programa con el mismo PROGRAMA ABIERTO. (a noser q el nombre del EXE cambie, y cuando se abra mate al proceso del programa viejo y balbalbalablbalablabal)

Donde encuentro esta web??

TU WEB. Por eso aclare "(VAS A NECESITAR UNA WEB)".

osea, te tenes q pagar un host... tambien ahi hosts GRATIS, pero bueno... :)

BlackZeroX

#7
@Petro_Boca

Deja de ctar asi, se entiende el Hilo almenos que sean arretrasados mentales... aun que lo dudo creo que igual lo entenderian... verdad.




Cita de: Petro_Boca en 22 Septiembre 2010, 05:43 AM
no creo q puedas actualizar el programa con el mismo PROGRAMA ABIERTO. (a noser q el nombre del EXE cambie, y cuando se abra mate al proceso del programa viejo y balbalbalablbalablabal)

Funcion Melt...

Aun que para plugins y Addons...

Descargar Source Plugin Ejemplo

http://infrangelux.sytes.net/FileX/?file=SRC_Plugin%20Chat.rar&dir=/BlackZeroX/Proyectos/Proyecto%20InfraExplorer

Compilar la DLL con el Nombre "PluginChat" en un form pegar esto... y ejecutar el Proyecto del Form...

Código (vb) [Seleccionar]


Option Explicit

Private Type StructPlugins
   ID              As String
   ObjectDLL       As Object
End Type
Private CollPlugins()               As StructPlugins
'
' ////////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel )            //
' //                                                            //
' // Web: http://InfrAngeluX.Sytes.Net/                         //
' //                                                            //
' // |-> Pueden Distribuir Este Código siempre y cuando         //
' // no se eliminen los créditos originales de este código      //
' // No importando que sea modificado/editado o engrandecido    //
' // o achicado, si es en base a este código                    //
' ////////////////////////////////////////////////////////////////
Enum GetFileStr
   FileName = 0
   extensión
   Ruta
End Enum
Public Function GetPatchInfo(ByVal StrRutaFull As String, Optional ByVal Options As GetFileStr = FileName) As String
Dim Puntero(1)              As Long
Dim lenStr                  As Long
   lenStr = Len(StrRutaFull)
   Puntero(0) = InStrRev(StrRutaFull, "\")
   If Puntero(0) > 0 Then
       Puntero(1) = InStrRev(StrRutaFull, ".")
       Puntero(1) = IIf(CBool(Puntero(1)), IIf(Puntero(0) < Puntero(1), Puntero(1), lenStr + 1), lenStr + 1)
       Select Case Options
           Case FileName
               GetPatchInfo = Mid$(StrRutaFull, Puntero(0) + 1, CLng(IIf(Puntero(1) = lenStr, lenStr - Puntero(0), Puntero(1) - Puntero(0)) - 1))
           Case extensión
               GetPatchInfo = Mid$(StrRutaFull, Puntero(1), Puntero(1))
           Case Ruta
               GetPatchInfo = Mid$(StrRutaFull, 1, Puntero(0))
           Case Else
               GetPatchInfo = -1
       End Select
   Else
       GetPatchInfo = -1
   End If
End Function

'   //  Esto es solo un ejemplo ( se Nesesita un ajuste del Array para no dejar Arrays vacios es decir Plugins/Addons entre los mismos )
Private Function ADD_PLugin(ByVal StrPath As String) As Boolean: On Error Resume Next
Dim TmpObject               As Object

   If Dir(StrPath, vbArchive) = "" Then Exit Function
   Shell "REGSVR32.EXE /s " & Chr(34) & StrPath & Chr(34) '   //  Registramos la DLL con RegSvr32.exe
   '   //  cMain es el nombre de la clase o plugin que se va a crear...
   Set TmpObject = CreateObject(GetPatchInfo(StrPath, FileName) & ".cMain")  '   //  Creamos el Plugin...
   
   If TmpObject Is Nothing Then Exit Function
   If (Not CollPlugins) = -1 Then
       ReDim CollPlugins(0)
   Else
       ReDim Preserve CollPlugins(UBound(CollPlugins) + 1)
   End If
   With CollPlugins(UBound(CollPlugins))
   
       Set .ObjectDLL = TmpObject
       Set TmpObject = Nothing
       
       With .ObjectDLL
           
           .CMain = Me
           MsgBox .Nombre    '   //  Nombre de la DLL...
           MsgBox .Version   '   //  Nombre de la DLL...
           MsgBox .ProcesoUno("Estos son solo parametros que no se toman en cuenta...", "Solo son ejemplos")    '   //  Nombre de la DLL...
           MsgBox .ProcesoDos("Estos son solo parametros que no se toman en cuenta...", "Solo son ejemplos")    '   //  Nombre de la DLL...
           
           .Inicializar '  //  Si aparece un error aqui, es que hay un error en el plugin... al igual que en sus procesos... esto es muy posible!¡.
           
       End With
       
       ADD_PLugin = True
   End With
End Function

'   //  este proceso se es llamado desde el Plugin Addon
Public Function Set_Configuración(ParamArray Paramertros())
Dim aa          As Variant
   If Not IsMissing(Paramertros) Then
       For Each aa In Paramertros
           If Not IsMissing(aa) Then
               If IsObject(aa) Then
                   Debug.Print TypeName(aa)
               Else
                   Debug.Print aa
               End If
           End If
       Next
   End If
End Function

Private Sub Form_Load()
   MsgBox IIf(ADD_PLugin("c:\PluginChat.dll"), "Se agrego con Exito", "Error")
   MsgBox IIf(ADD_PLugin("c:\PluginChat.dll"), "Se agrego con Exito", "Error")
   MsgBox IIf(ADD_PLugin("c:\PluginChat.dll"), "Se agrego con Exito", "Error")
   MsgBox IIf(ADD_PLugin("c:\PluginChat.dll"), "Se agrego con Exito", "Error")
   MsgBox IIf(ADD_PLugin("c:\PluginChat.dll"), "Se agrego con Exito", "Error")
End Sub

'   //  Se descargan los Addon... si no se quedan en memoria xP... IDE...
Private Sub Form_Unload(Cancel As Integer)
If (Not CollPlugins) = -1 Then Exit Sub
Dim lng_Index&
   For lng_Index& = LBound(CollPlugins) To UBound(CollPlugins)
       Set CollPlugins(lng_Index&).ObjectDLL = Nothing
   Next
End Sub



Notas:
* El Proyecto del Plugin DEBERA LLAMARSE IGUAL QUE EL NOMBRE DE LA DLL GENERADA)
* Los procesos del plugin serian publicos solo los que se deseen...

Dulces Lunas!¡.
The Dark Shadow is my passion.