elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.  (Leído 6,968 veces)
Lordzito

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« en: 3 Marzo 2012, 19:12 pm »

Hola, pues no sabia como poner en la descripcion pero ojala me entiendan, pues tengo un actualizador el cual sirve para actualizar un programa que estoy haciendo, pues  lo que hice fue subi un archivo .txt nombrado "version.txt" a un servidor ejemplo a los de "miarroba.es" pues el actualizador lo que hace es  revisar el "version.txt" y ver si la version que contiene el .txt coincide con el numero interno del actualizador pues hast ahi esta bien, porque si el programa es la version "1.0" y en el archivo .txt subido al servidor esta en "1.0" pues en el actualizador salta un pop-up que dice que el "¡ No hay actualizaciones disponibles por el momento !"  pero si al version.txt le cambio a "2.0" pues al ejecutar el actualizador salta un pop-up y dice: "¡ ¡ ¡ Se ha encontrado una nueva actualización ! ! !" pues hasta ahi bien lo que pasa es que el actualizador solo detecta el ultimo numero osea si la version es "1.0" pues detecta solo el "0" y pues yo quiero que detecte el primer numero osea el "1", lo quiero de esa forma porque si solo detecta el ultimo numero pues al tener la version "1.0" y en la version.txt subida al servidor "2.0" pues ahi ya no actualizara porque detectara solo el ultimo numero y dira que el programa ya esta actualizado por eso es que quiero que detecte el primer digito y no se como, aki les dejo el code del modulo:

Código
  1. Option Explicit
  2. '#  Quitar Botón Cancelar#
  3. Public Const MF_BYPOSITION = &H400
  4. Public Const MF_REMOVE = &H1000
  5. Public Declare Function DrawMenuBar Lib "user32" _
  6.      (ByVal hwnd As Long) As Long
  7. Public Declare Function GetMenuItemCount Lib "user32" _
  8.      (ByVal hMenu As Long) As Long
  9. Public Declare Function GetSystemMenu Lib "user32" _
  10.        (ByVal hwnd As Long, _
  11.        ByVal bRevert As Long) As Long
  12. Public Declare Function RemoveMenu Lib "user32" _
  13.        (ByVal hMenu As Long, _
  14.        ByVal nPosition As Long, _
  15.        ByVal wFlags As Long) As Long
  16.  
  17. '#####################################
  18. '#  Progamado por Lordzito               #
  19. '#  Version: 1.0                     #
  20. '# Modulo para actualizar programas  #
  21. '#####################################
  22. '####### Apis!! ######################
  23. Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
  24. Private Declare Function DoFileDownload Lib "shdocvw.dll" (ByVal lpszFile As String) As Long
  25. '#####################################
  26. '####### editar estos valores ########
  27. Const Version = "1.0" 'version del software actual
  28. Const pagver = "http://lordsoft.webcindario.com/version.txt" 'la pagina web donde se encuentra la ultima version, este archivo tiene que contener el último número de versión
  29. Const pagdown = "http://download.piriform.com/ccsetup316.exe" 'donde tengas el ejecutable actualizado
  30. Const tipe = 1 'elegir opcion de descarga de actualizacion 1 = abrir dialogo de descarga 2 = descargar sin pedir confirmación y ejecutar (<- no es recomendado) 3 = abrir dialogo de descarga y cerrar programa
  31. '#####################################
  32. Const acc0 = "Modulo creado por Lordzito" 'ésto no hay que cambiar
  33. Dim ERROR_SUCCESS
  34. Dim sSourceUrl As String
  35. Dim versionA As String
  36.  
  37. Private Function Descargar(ByVal link As String, ByVal slocalfile As String) As Boolean
  38.  Descargar = URLDownloadToFile(0, StrReverse(link), slocalfile, 0, 0) = ERROR_SUCCESS
  39. End Function
  40.  
  41. Private Function DownloadV(ByVal directory As String) As Boolean
  42. sSourceUrl = StrReverse(directory)
  43. Descargar StrReverse(StrReverse(sSourceUrl)), StrReverse(StrReverse(App.Path)) & "\" & UCase("Version.txt")
  44. End Function
  45.  
  46. Private Function nestch()
  47. nestch = " creado por "
  48. End Function
  49.  
  50. Private Function steepA(ByVal directory As String) As Boolean
  51. sSourceUrl = StrReverse(directory)
  52. Descargar StrReverse(StrReverse(sSourceUrl)), StrReverse(StrReverse(App.Path)) & "\" & UCase("NV.exe")
  53. End Function
  54. Private Function verificar(ByVal verssion As String) As Boolean
  55. On Error Resume Next
  56. Dim lordzito As Integer
  57. Dim Versver As String
  58. lordzito = FreeFile
  59.    Open StrReverse(StrReverse(App.Path)) & "\" & UCase("Version.txt") For Input As #lordzito
  60.       Versver = Input(LOF(lordzito), #lordzito)
  61.    Close #lordzito
  62.    If Mid(acc0, 1, Len(acc0)) = sietch Then
  63.        If Versver = Version Then
  64.        MsgBox "  ¡ No hay actualizaciones disponibles por el momento !" & vbNewLine & "¡ ¡ ¡    ya está actualizado ! ! !", vbExclamation, "Actualización"
  65.        Else
  66.        Select Case MsgBox(" ¡ ¡ ¡ Se ha encontrado una nueva actualización ! ! ! " & vbNewLine & "Desea descargar automaticamente la nueva versión?", vbYesNo + vbInformation, "Actualización")
  67.        Case vbYes
  68.     'aca si presiono Si
  69.        actualizar (tipe)
  70.     'aca si presiono No
  71.        Case vbNo
  72.        End
  73.        End Select
  74.        End If
  75.    Else
  76.    MsgBox error25, vbCritical, "ERROR SOBRE DERECHOS DE AUTOR"
  77.    End If
  78. End Function
  79. Private Function actualizar(ByVal streeng As String) As Boolean
  80. If streeng = 1 Then
  81. DoFileDownload StrConv(pagdown, vbUnicode)
  82. ElseIf streeng = 2 Then
  83. steepA (StrReverse(pagdown))
  84. Shell (StrReverse(StrReverse(App.Path)) & "\" & UCase("NV.exe"))
  85. ElseIf streeng = 3 Then
  86. DoFileDownload StrConv(pagdown, vbUnicode)
  87. End
  88. End If
  89. End Function
  90.  
  91. Public Function Buscar_Actualizacion()
  92. Dim strp As Boolean
  93. strp = DownloadV(pagver)
  94. verificar (StrReverse(LCase(UCase(StrReverse(Version)))))
  95. End Function
  96.  
  97. Private Function sietch()
  98. Dim putus As String
  99. putus = StrReverse("Modulo")
  100. putus = StrReverse(putus) & nestch & "Lordzito"
  101. sietch = putus
  102. End Function
  103.  
  104. Private Function error25()
  105. error25 = "El derecho de autor correspondiente a LORDZITO fue cambiado o eliminado"
  106. End Function
  107.  

Esta es la parte del Code que quiero arreglar
Código
  1. Const Version = "1.0" 'version del software actual
  2. Const pagver = "http://lordsoft.webcindario.com/version.txt" 'la pagina web donde se encuentra la ultima version, este archivo tiene que contener el último número de versión

O si saben de algun otro actualizador mejor escribanmelo porfa se los agradeceria !!!


« Última modificación: 3 Marzo 2012, 20:27 pm por Lordzito » En línea

Deeo Raiser

Desconectado Desconectado

Mensajes: 22


Se todo Sobre Ti.


Ver Perfil WWW
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #1 en: 4 Marzo 2012, 01:05 am »

Hola Lordzito, como estas ?

Mira, la verdad es que no entendi mucho tu codigo, ademas es muy largo  :-\.
Por lo que me dispuse a hacer lo que estas tratando de hacer, esto es lo que me salio, espero que te sirva. :o

En el formulario:
     Label = lblVersion
     CommandButton = Command1


Código
  1. Option Explicit
  2. 'Funcion API URLDownloadToFile
  3. Private Declare Function URLDownloadToFile _
  4.    Lib "urlmon" _
  5.    Alias "URLDownloadToFileA" ( _
  6.        ByVal pCaller As Long, _
  7.        ByVal szURL As String, _
  8.        ByVal szFileName As String, _
  9.        ByVal dwReserved As Long, _
  10.        ByVal lpfnCB As Long) As Long
  11.  
  12. 'Variable donde colocaremos la version
  13. Dim Version As String
  14.  
  15. Private Sub Command1_Click()
  16.    Call Descargar("http://lordsoft.webcindario.com/version.txt")
  17. End Sub
  18.  
  19. Sub Descargar(Url As String)
  20.  
  21.    'LLamamos a la APi de Win, y le pasamos los parametros, Url y la ruta de descarga ("C:/....")
  22.    Call URLDownloadToFile(0, Url, "c:\Version.txt", 0, 0)
  23.  
  24.    'Una ves descargado lo abrimos de forma Binaria
  25.    Open "c:\Version.txt" For Binary As 1#
  26.         Version = Space(LOF(1))
  27.         Get #1, , Version 'Cargamos la versión en la variable
  28.    Close #1
  29.  
  30.    'No hace Falta Explicar
  31.    lblVersion.Caption = Version
  32.  
  33.    'Eliminamos el achivo
  34.    Kill ("c:\Version.txt")
  35. End Sub

DESCARGAR CÓDIGO COMPLETO


« Última modificación: 4 Marzo 2012, 02:03 am por Deeo Raiser » En línea




"Recuerda siempre que tu propia  resolución de triunfar es mas importante que cualquier otra cosa."
Abraham Lincoln
Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #2 en: 5 Marzo 2012, 21:56 pm »

desofusca y sacale las comprobaciones redundantes a ver si se le cambio el derecho de autor y volvelo a poner.

El principal problema es que no estas usando bien el archivo txt por lo que parece.
Proba de la forma que dijo deeo raiser y no hagas trampas y comprobaciones. si liberas el codigo es mas que bobo que te pueden sacar la comprobacion de esa linea de derecho de autor ¬¬

Voy a hacerte el trabajo mas facil y voy a hacer un modulo



Aca esta

Código
  1. Option Explicit
  2. 'PROOF OF CONCEPT / PRUEBA DE CONCEPTO
  3. 'ELEMENTAL CODE (Milton Candelero)
  4. '5/3/2012 (dd/mm/aaaa)
  5. 'UPDATE MODULE / MODULO DE ACTUALIZACION
  6. 'En caso de uso y/o modificacion, respetar los creditos.
  7. 'Hecho para Lordzito ya que su version era fea, ineficiente, y tenia muchisimas comprobaciones de si le habian sacado una linea que decia "By lordzito" &#172;&#172;
  8.  
  9.  
  10. Const OldVer As Double = 666 'Version actual (solo admite formato x.x NO USAR FORMATOS COMO x.x.x.x)
  11. Const URLVer As String = "URL del txt" 'url del txt
  12. Const URLSetup As String = "URL del archivo" 'url del archivo
  13. 'EDITAR LAS CONSTANTES DE ARRIBA!!
  14. 'SINO ESTO NO VA A FUNCIONAR.
  15. '***********************************************************
  16. Dim NewVer As Double
  17. Dim ff As Integer
  18. Dim sVersion As String
  19. '(USO DOUBLES para que si yo tengo la version 1.6 y el txt dice 1.5 no me obligue a actualizar)
  20.  
  21. 'URLDownloadToFile es una de las formas mas feas de bajar un archivo, pero bueh, que se le va a hacer :P
  22. Private Declare Function URLDownloadToFile _
  23.    Lib "urlmon" _
  24.    Alias "URLDownloadToFileA" ( _
  25.        ByVal pCaller As Long, _
  26.        ByVal szURL As String, _
  27.        ByVal szFileName As String, _
  28.        ByVal dwReserved As Long, _
  29.        ByVal lpfnCB As Long) As Long
  30.  
  31. 'Verifica y contesta TRUE si hay actualizaciones nuevas y FALSE si no las hay.
  32. Public Function UpdateAvailable() As Boolean
  33.    Call URLDownloadToFile(0, URLVer, "c:\Version.txt", 0, 0)
  34.    ff = FreeFile
  35.    Open "c:\Version.txt" For Binary As ff#
  36.         sVersion = Space(LOF(1))
  37.         Get #ff, , sVersion
  38.    Close #ff
  39.    NewVer = CDbl(sVersion)
  40.    If NewVer > OldVer Then UpdateAvailable = True Else UpdateAvailable = False
  41. End Function
  42.  
  43. 'Descarga el archivo indicado en la constante "URLSetup"
  44. Public Function DownloadSetup(Optional sPath As String = "c:\SETUP.exe")
  45.    Call URLDownloadToFile(0, URLSetup, sPath, 0, 0)
  46. End Function

No tiene msgbox (Cosa HORRIBLE para un modulo)
No tiene comprobaciones de derechos de autor (Estupido, si estas liberando el codigo :P)
Usa URLDownload to file (es mal forma de bajar archivos, pero funciona al efecto :P)
tiene dos metodos:
  • UpdateAvailable
Verifica el TXT y devuelbe true o false para que vos puedas decidir si preguntar al usuario o no sobre la actualizacion, o poner otro mensaje, o hacer lo que se te de la gana :D
  • DownloadSetup
Descarga el archivo de actualizacion adonde tu le digas o sino lo descarga automaticamente en C:\


ASI se hace un buen modulo ;)


edito una vez mas.
Creo que lo de poner constantes no es la mejor idea del mundo.
Podria ser todo pasado como parametro a la funcion.
Pero te deje eso para respetar un pooooquiiito del codigo original.
« Última modificación: 5 Marzo 2012, 22:26 pm por Elemental Code » En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Lordzito

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #3 en: 6 Marzo 2012, 07:54 am »

Código
  1. Option Explicit
  2. 'Funcion API URLDownloadToFile
  3. Private Declare Function URLDownloadToFile _
  4.    Lib "urlmon" _
  5.    Alias "URLDownloadToFileA" ( _
  6.        ByVal pCaller As Long, _
  7.        ByVal szURL As String, _
  8.        ByVal szFileName As String, _
  9.        ByVal dwReserved As Long, _
  10.        ByVal lpfnCB As Long) As Long
  11.  
  12. 'Variable donde colocaremos la version
  13. Dim Version As String
  14.  
  15. Private Sub Command1_Click()
  16.    Call Descargar("http://lordsoft.webcindario.com/version.txt")
  17. End Sub
  18.  
  19. Sub Descargar(Url As String)
  20.  
  21.    'LLamamos a la APi de Win, y le pasamos los parametros, Url y la ruta de descarga ("C:/....")
  22.    Call URLDownloadToFile(0, Url, "c:\Version.txt", 0, 0)
  23.  
  24.    'Una ves descargado lo abrimos de forma Binaria
  25.    Open "c:\Version.txt" For Binary As 1#
  26.         Version = Space(LOF(1))
  27.         Get #1, , Version 'Cargamos la versión en la variable
  28.    Close #1
  29.  
  30.    'No hace Falta Explicar
  31.    lblVersion.Caption = Version
  32.  
  33.    'Eliminamos el achivo
  34.    Kill ("c:\Version.txt")
  35. End Sub

Muchas Gracias, Deeo Raiser!!! lo probe y esta bueno lo tomare en cuenta, Saludos
En línea

Lordzito

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #4 en: 6 Marzo 2012, 07:54 am »

Hola, Deeo Raiser Gracias x responder y demasiadas gracias x el code que me pusistes lo voy a probar de verdad muchisisimas gracias y sobre esto que escribistes:

desofusca y sacale las comprobaciones redundantes a ver si se le cambio el derecho de autor y volvelo a poner.
no hagas trampas y comprobaciones. si liberas el codigo es mas que bobo que te pueden sacar la comprobacion de esa linea de derecho de autor ¬¬

Pues hace tiempo yo hize varios actualizadores pero eran peroes de feos que el que postie y pues un amigo mio me dijo q me iva a ayudar a hacerme uno y pues el me hizo ese q puse y pues eso de derechos de autor y mi sobrenombre que tien pues lo hizo el no fui yo, y pues cuando puse el codigo aki para pedir ayuda, pues claro q pense en ponerlo o no ponerlo, pero al fin y al cabo este code era solo una prueba que me habian echo para tener ya un como campo de como haria lo demas y pues decidi ponerlo sin importar cualkier cosa y como andaba preciso no me acorde de kitar sikiera la lineas de derecho de autor que mi amigo le habia puesto y con mi sobre nombre "lordzito", xq tienes razon es algo obvio que si pongo que no cambien nada del code pues claro que mas rapido lo harán y diran que ellos lo han creado, pero este code solo era una prueba pues, claro q si fuera ya el code que ocuparia en si en mi programa q estoy creando pues no creo q lo liberara tan asi de facil, pero gracias x tus sugerencias y tomare mucho en cuenta lo q me dijistes para en otra vez no se me escape ya siendo un code mas oficial y a proposito veo q el q tu me pusistes esta muy bien echo y claro q lo utilizare y lo modificare pa ir mejorando mas y mas hasta dodne me guste de verdad muchisimas gracias Brother!!!

Edito: y a parte de "URLDownloadToFile" con que otra funcion me recomiendas descargar!!!
« Última modificación: 8 Marzo 2012, 06:48 am por Lordzito » En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #5 en: 6 Marzo 2012, 16:29 pm »

creo que karcrack o cobein habian hecho un modulo que descargaba sin ninguna api.
Buscalo por aca, deberia estar :)
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Hacer que actualizador creado en VB6 detecte versiones pero el primer digito.
« Respuesta #6 en: 10 Marzo 2012, 23:20 pm »

aparte la api URLDownloadToFile te traba la aplicacion hasta que termine de descargar, el mejor metodo que he visto es usar descarga asincrona (la de cobein) que usa un usercontrol, dentro de los usercontrol hay un método llamado AsyncRead que sirve para descargar archivos de manera asincrona y no se te traba la aplicacion y de paso tambien tiene unos eventos para poder saber el progreso de la descarga, y cuando termina.

ejemplo:

1 - Método AsyncRead

saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines