Atualizando a versão do seu programa VB pela Internet !!!


Quem um dia poderia imaginar que a Internet pudesse chegar ao nível que chegou hoje. Podemos dizer que a Internet é algo muito recente se comparada com outras tecnologias. Podemos dizer também que hoje quase tudo gravita em torno da Web.

Creio que a medida do sucesso de uma tecnologia é o fato de facilitar a vida das pessoas; se uma tecnologia for acessível as pessoas e elas perceberem que com sua utilização a vida fica mais fácil , com certeza ela fará sucesso.

Com a internet o acesso e a transferência de informações é de uma facilidade fantástica ( apesar dos problemas de comunicação ). Podemos acessar qualquer informação , em qualquer lugar do planeta , basta ela estar na Internet.  Podemos também transferir arquivos , e , é aqui que eu vou ancorar meu barquinho...

A Transferência de arquivos  significa copiar arquivos de um computador para outro. Através deste processo, você pode copiar arquivos de outro computador para seu computador e do seu computador para outro computador.

Um dos principais métodos de transferência de arquivos na Internet usa o protocolo FTP - File Transfer Protocol; Vamos então dar um pequena introdução ao FTP:

O FTP é o principal método de transferência de arquivos na INTERNET. Em princípio, a transferência de arquivos entre dois computadores, pressupõe que você tenha permissão de acesso (username) nos dois sistemas.

No entanto, existe uma forma de contornar esta restrição. Através do uso do serviço de FTP anônimo, você poderá ter acesso a um número muito grande de computadores da INTERNET que possuem arquivos disponíveis para o público. São documentos  , imagens , livros , etc..

Usamos o FTP quando temos as seguintes informações:

Vejamos a seguir os principais comandos usados no FTP :

ascii -Coloca o FTP no modo ASCII (usado quando a intenção for transferir arquivos de texto).
binary  Coloca o FTP no modo binário (usado quando a intenção for transferir arquivos que não sejam de texto).
 
cd - Comando usado para mudar de diretório. Pode ser usado na forma 'cd nome_dir' (Exemplo: 'cd pub'), ou na forma 'cd nome_dir1/nome_dir2/nome_dir3' (Exemplo: 'cd pub/virus/pc').
 cdup - Volta para o diretório imediatamente anterior ao que você se encontra.
 
 dir - Exibe uma listagem do conteúdo (arquivos e outros diretórios) do diretório onde o usuário se encontra.
 
 get - Transfere um arquivo para o seu computador.
 
 hash - Liga/desliga a exibição do caractere '#' durante a transferência. Isto permite que se veja o andamento do processo de transmissão de arquivo.
 
 help - Exibe uma lista com todos os comandos do FTP
 
 mget - Transfere para o seu computador um conjunto de arquivos.
 
 mput - Transfere um conjunto de arquivos do seu computador para o computador que está sendo acessado.
 
 put- Transfere um arquivo do seu computador para o computador que está sendo acessado.
 
 pwd - Informa para você em que diretório você se encontra na máquina que está sendo acessada.
 
 quit ou bye - Encerra o FTP.

Aonde eu estou querendo chegar com toda esta estória de FTP ? Bem...

No VB , como não poderia deixar de ser,  podemos empregar esta mesma funcionalidade do FTP em transferir arquivos pela internet ou intranet , basta usar o controle Microsoft Internet Transfer Control ou INET.

Eu já abordei os aspectos básicos do controle INET no artigo - Transferindo arquivos com o VB - por isso vou direto ao objetivo principal deste artigo - Como fazer a atualização de versões do seu programa VB pela internet ?

Imagine você distribuir sua aplicação e dizer ao seu cliente que a atualização da versão é automática pela Internet (como fazem alguns programas - o  Norton por exemplo). Você acha que não da conta ?  Vamos mostrar que a coisa é mais simples do que parece...

O que vamos atualizar ?  Qual a lógica ?

Quando você distribui uma aplicação Visual Basic - independente do instalador que você usou para gerar os discos de distribuição - a primeira instalação deverá ser efetuada de forma completa na máquina do seu cliente de forma a registrar as dll´s e as OCX´s que você usou no seu sistema.

As atualizações posteriores poderão ser feitas pela distribuição do arquivo EXE que você gerar do seu sistema. (desde que você não inclua uma nova OCX ou DLL ). Então para atualizar a versão do sistema . basta o  cliente copiar o arquivo EXE que você distribuiu sobrepondo o arquivo anterior.

Para realizar a atualização automática de versão do seu sistema pela internet , você vai precisar disponibilizar em um servidor o seu arquivo EXE e incluir no seu sistema o código para que o programa faça o download do arquivo EXE presente no servidor.

O download do arquivo EXE deverá ser  efetuado toda vez que a versão do cliente for diferente da versão disponibilizada no servidor . O seu código vai ter que saber fazer isto . Como ? Uma forma simples de resolver este problema é disponibilizar junto com a nova versão um arquivo texto contendo o número da versão. Então você vai disponibilizar no servidor dois arquivos:  o arquivo EXE e um arquivo texto(.TXT) com uma linha informando o número da versão. Em nosso exemplo vou usar um arquivo texto chamado Versao.txt que conterá uma única linha indicando a versão atual disponível.

Criando o código para fazer o Download da nova versão

Agora vamos criar a função que você deverá incluir no seu sistema de forma a poder fazer o download das atualizações.  Esta função vai receber dois argumentos : o Local e nome do arquivo temporário que será criando  e o endereço URL e nome do arquivo que devera sofre o upload  indicando a localização remota do arquivo. 

Aqui é que entra em ação o Microsoft Internet Transfer Control    e você vai precisar incluir este componente no seu projeto para o código abaixo funcionar: 

Public Function Baixa_Versao(LocalArquivo As String ,  LocalURLArquivo As String) As Boolean

     On error goto Baixa_erro

     Dim bt() As Byte

     Open LocalArquivo For Binary Access Write As #1

     bt() = Inet1.OpenURL(LocalURLArquivo , icByteArray)

     Put #1, , bt()

     Close #1

     Baixa_Versao=True

     Exit Function

     Baixa_erro:

     Msgbox "Ocorreu um erro durante a transferência do arquivo  !", vbcritical

     Baixa_versao = False

     Close#1

End Function

Para fazer o download de um arquivo chamado teste.txt presente no servidor geocities e salvá-lo no drive c:\teste com nome de baixa.dat você deverá invocar a função assim: 

call Baixa_Versao("c:\teste\baixa.dat","http://www.geocities.com/macoratti/teste.txt") 

Já temos uma problema resolvido ; vamos a outro problema : Quando o sistema deverá fazer o download ? 

Este problema tem duas soluções :

1-) Você incrementa o código para verificar se existe uma conexão internet ativa e quando existir acionar o download 

2-) Você deixa isto a cargo do seu cliente , implementando uma opção no menu para que o download seja feito.

Verificando a versão e fazendo o Download

Antes de fazer o download da versão propriamente dita , devemos baixar o arquivo versao.txt e verificar se a versão disponível é mais atual que a versão do sistema. Para fazer isto usamos a função Baixa_Versao que criamos acima.

Vejamos agora o código da função que irá verificar a se a versão disponível é a mais atual:

Public Function Verifica() As Boolean

   Dim Atual as Boolean

   Dim Versao as String

   Dim Versao_Atual  As string

   Versao_Atual = App.Major & App.Minor & App.Revision

    Atual = False

   if Baixa_Versao("c:\versao\atual.txt", "http://www.geocities.com/macoratti/versao.txt")

        Open "c:\versao\atual.txt" for Input As #1

        Line Input #1 , Versao

        Close #1

        

        Versao=trim(Versao)

         

        Kill "c:\versao\atual.txt

 

        If  Versao <> ""  And  Versao_Atual  <  Versao  Then

               Atual = Baixa_Versao("c:\versao\TEMP.EXE", "http://www.geocities.com/macoratti/seu_programa.exe")

        End If

   End If

   Verifica = Atual

End Function

A função Verifica faz o download do arquivo versao.txt , abre o arquivo e compara o número da versão informada com a versão atual do sistema.

Se a versão informada não estiver vazia e se a versão atual for menor que a versão informada efetuamos o download do arquivo EXE disponibilizado.

Creio que com essas informações você já sabe como fazer para atualizar seus aplicativos automaticamente e pela internet. 

Hasta la vista   

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti