Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EASxD

[Resolvido] [Vb] Auto Update

Recommended Posts

Olá eu estou tentando fazer um form de auto update para meu projeto para atualizar seus componentes como dlls e etc...

onde esse form faz a conexão com o servidor e verifica a lista de arquivos a serem baixados e a versão dessa lista e

versão de cada arquivo Tipo um MD5 por exemplo:

 

1

user.dll a394686c96526f940262ab275b020259

pasta\database.dll c79d89578a37b549158104f4197e824e

pasta\database.mdb 3917165ee67edd231f2b44f3019053ba

 

mais ou menos assim a lista..

 

mas gostaria de ver algum exemplo, Tentei fazer sozinho usando

My.Computer.Network.DownloadFile

e usando o Net.WebClient.DownloadFileAsync

 

mas nao dei conta

 

tentei fazer tbm sem usar lista colocando um link direto de uma executavel só criou um arquivo com 0bytes e nem baixou

 

 

fiz um teste aqui assim não baixou

My.Computer.Network.DownloadFile("http://download.piriform.com/ccsetup223.exe", "temp\ccsetup223.exe", Nothing, Nothing, False, 100, True)
e assim baixou

My.Computer.Network.DownloadFile("http://download.piriform.com/ccsetup223.exe", "temp\ccsetup223.exe)

 

Agora alguem poderia me da um exemplo como fazer por lista ou algo do tipo? eu vou continuar tentando aqui!

Compartilhar este post


Link para o post
Compartilhar em outros sites

simplismente só criou um arquivo com 0bytes e o nome

tentei usar no load do form e em button

 

eu to com algumas open source aqui que tem mais ou menos o sistema que eu quero

mas tipo ele baixa de uma lista mas da pra alterar os arquivos no cliente

 

no caso oque eu procuro é um auto update que puxa os arquivos listados no servidor

e que verifique se os arquivos do cliente foram alterados

 

aquele metodo ali encima que eu mostrei é só pra baixar a lista mas já dei um jeito pra baixar a lista

e no pc deve ficar uma lista com a versão dos arquivos para o proximo update tbm né

 

e no cliente vai ficar só um arquivo com a versão da lista

 

agora deu pra entender ? :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha cara, eu fiz algo parecido, ae fiz uma sub para baixar os arquivos.

 


 Private Sub baixa(ByVal arq As String, ByVal dest As String)
        Dim site As String = "http://ip.ou.site/diretorio/"
        Dim webClient As New WebClient()
        Try
            webClient.DownloadFile(site & arq, dest)
        Catch ex As Exception
            If MsgBox("Ocorreu um problema durante a tentativa de atualização. " & vbCrLf & "Deseja ver detalhes do erro?", MsgBoxStyle.YesNo + MsgBoxStyle.Critical) = MsgBoxResult.Yes Then
                MsgBox(arq & vbCrLf & dest & vbCrLf & vbCrLf & "Mensagem de erro: " & vbCrLf & ex.ToString)
            End If
        End Try
    End Sub

pelo menos aki funciona que eh uma maravilha cara..

 

boa sorte ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Obrigado nexus por tentar me ajudar eu testei desse jeito ai funcionou ele baixa tudo que tem no diretorio do servidor de update

é mais ou menos isso que eu quero mas tipo eu gostaria que ele se conecta a um arquivo que contem a lista dos arquivos o md5 e a versão da lista

ai ele faz a verificação no md5 dos arquivos citado na lista do cliente a versão da lista caso estejam diferentes ele atualiza...

 

seria possivel fazer isso utilizando webclient?

 

acho que é o melhor jeito que consigo explicar :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha, eu entendi o que você quiz dizer.

 

o modo de usar essa funcao seria assim: baixa("aplicativo.exe","c:\sistema\aplicativo.exe")

ae ele iria copiar somente o arquivo aplicativo.exe e salva-lo na pasta sistema...

 

para fazer isso que você quer você tem varias opcoes

1) Salvar esses MD5 sums num banco de dados, conectar a esse bd pela net, dar um select nos valores que deseja e tomar suas atitudes. (pode ser meio lento dependendo do link de internet)

2) Salvar os sums em um arquivo de texto do tipo INI (existem algumas classes prontas na net para acessar arquivos ini que facilitam muito o trampo) no servidor, e entao usar a funcao Baixa para efetuar download deste arquivo de texto, ae você le os valores e toma suas decisoes (de inicio parece ser um pouco mais complicado, porem nos testes que eu fiz foi o metodo mais rapido)

3) no servidor você pode criar paginas web com os sums, baixar essas paginas com um webclient, e tratar o texto para pegar os valores e tomar suas decisoes (nunca fiz dessa maneira, mas acredito ser mais rapido e facil do que com arquivos INI)

 

usando uma destas você conseguira o que deseja.

 

boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

vlw... vou pesquisar sobre esses metodos menos de ler aquivos ini eu ja tinha aqui

 

o problema é que eu procuro e nao acho :S

mas vou tentar do jeito que você falou ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao faz pelo de INI.... funciona bem, eu uso desta maneira eheheh.

 

no meu caso, no arquivo ini eu tenho uma chave Versao=XXX.. se a versao do ini for maior do que a versao local entao eu baixo o executavel atualizado e substituo o original (para isso tenho que executar em um programa separado...tipo quando executa o form de verificar atualizacao de dentro do meu sistema, ele faz todos esses downloads do INI e se necessario dos aplicativos novos, ae entao em disparo um outro executavel e fecho o programa em execucao, desta maneira no outro programa eu apago o arquivo antigo e renomeio o novo e executo o novo tudo muito rapido em menos de 2 segundos e ja era..)

 

flw boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

eu vi varios sistemas de update desse jeito na internet..

 

Achei aqui algo pra verificar o MD5 Do Arquivo agora é só adaptar baixei open source ele compara o MD5 dos arquivos citados na textbox

http://www.macoratti.net/comparaArquivos.zip

 

 

o problema é que eu só sei um jeito de dar readini é o unico jeito que eu tenho aqui...

 

depois de baixar o ini ele da print la nessa linha ai aqui e o sAtualizacaoINI fica valendo atualizacao.txt

sAtualizacaoINI = ReadINI(My.Application.Info.DirectoryPath & "\Informacoes.ini", "Informacoes", "Atualizacao")

 

no caso ele seleciona oque ta no informacoes.ini e tem essa linha la no ini

 

[informacoes]

atualizacao = atualizacao.txt

 

atualizacao.txt é bem assim dentro do arquivo:

test.txt, A1, http://127.0.0.1:8090/test.txt, 1, 1

 

e é utilizado um metodo pra ler cada parte dessa linha ai separada por ","

sabe me dar um exemplo pra dar readini em um mais ou menos assim ou algo parecido?

 

[Version]

0.0.0.0

 

[MD5Checksum]

1, b5c1a593817574602dbbb6f51820aac0

 

[FilesToDownload]

1, \file1.exe

 

vou procurar aqui outros metodos... pra min poder adaptar o MD5 pra ler INI e comparar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro, você esta tornando algo simples em algo complicado ehehe

 

bom, vamos la:


'Arquivo Informacoes.Ini'

[Version]
Version=0.0.0.0

[MD5Checksum]
App1=b5c1a593817574602dbbb6f51820aac0
App2=b5c1a593817574602dbbb6f51820aac0
App3=b5c1a593817574602dbbb6f51820aac0
App4=b5c1a593817574602dbbb6f51820aac0

[FilesToDownload]
App1=\file1.exe
App2=\file2.exe
App3=\file3.exe
App4=\file4.exe

ok, ae em um unico arquivo você contem todas as informacoes necessarias.

para ler essas informacoes:

 


Dim Versao, MD1, MD2, MD3, MD4, Dir1, Dir2, Dir3, Dir4, Path As String

Path = My.Application.Info.DirectoryPath & "\Informacoes.ini"

Versao = ReadINI(Path, "Version", "Version")

MD1 = ReadINI(Path, "MD5Checksum", "App1")
MD2 = ReadINI(Path, "MD5Checksum", "App2")
MD3 = ReadINI(Path, "MD5Checksum", "App3")
MD4 = ReadINI(Path, "MD5Checksum", "App4")

Dir1 = ReadINI(Path, "FilesToDownload", "App1")
Dir2 = ReadINI(Path, "FilesToDownload", "App2")
Dir3 = ReadINI(Path, "FilesToDownload", "App3")
Dir4 = ReadINI(Path, "FilesToDownload", "App4")


ae você ve a versao e o checksum e se precisar Baixa(Dir1,"C:\Seu Sistema" & Dir1)

 

boa sorte

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

vlww quebrou meu galho no ReadINI :D

mas tava na cara é eu que sou burro >.<

mais tarde posto resultado com isso vai ficar muito mais facil se não fosse você tambem hêim ^_^

 

mas tem um pequeno problema caso eu adicione uma linha a mais no informacoes.ini eu vou ter que atualizar a aplicação de update :S

eu queria um sistema que nao precise >.<

 

 

problema resolvido lembrei de uma rotina que da o valor 0 e adiciona 1 a cada vez que é executado :D problema resolvido... :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

que bom que pude ajudar :)

 

ja precisei muito de ajuda tambem, e agora que posso ajudar os outros isso me recompensa.

 

fico feliz!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.