Atualização automática de aplicativos Visual Basic: Parte 2

Visual Studio 2005

Scott Swigart - Swigart Consulting LLC

Publicado em: 27/8/2006

Aplica-se a:

  • Microsoft Visual Basic 6.0

  • Microsoft Visual Basic 2005

  • Microsoft Visual Basic Express 2005 Edition

  • Microsoft Visual Studio 2005

Resumo:

Este artigo mostra como atualizar automaticamente aplicativos Visual Basic 6.0 e objetos COM, utilizando o .NET Framework 2.0 e a implantação do ClickOnce. (9 páginas impressas)

Clique aqui para efetuar download do código de exemplo deste artigo.

Nesta página

Visão geral Visão geral
Introdução Introdução
Implantações avançadas Implantações avançadas
COM sem registro COM sem registro
Conclusão Conclusão

Visão geral

Hoje, muitos aplicativos em produção podem detectar automaticamente quando uma nova versão encontra-se disponível, além de efetuar o download da atualização. Na Parte 1 deste artigo, você viu como é possível aperfeiçoar os aplicativos Visual Basic 6.0 existentes com a inclusão dessa funcionalidade de atualização automática. O ponto principal foi a utilização de um novo recurso do .NET Framework 2.0, conhecido como Implantação do ClickOnce. O ClickOnce possui a funcionalidade de detectar atualizações de aplicativos, solicitar que o usuário efetue downloads, instalar as atualizações e iniciar a nova versão do aplicativo. O ClickOnce pode até ser usado para a implantação inicial do aplicativo, simplificando assim o processo de obtenção do aplicativo para um grande número de usuários.

A Parte 1 deste artigo foi limitada à implantação e à atualização automática de um aplicativo Visual Basic 6.0 autônomo. Neste artigo, você aprenderá a implantar aplicativos mais complexos, que exigem a implantação de objetos COM ou de controles ActiveX com o aplicativo.

Introdução

Para utilizar a implantação do ClickOnce, você deve ter a versão mais recente do Visual Studio. Se já tiver o Visual Studio 2005 instalado, você estará pronto para começar; caso contrário, é recomendável efetuar download e instalar a versão gratuita do Visual Basic Express. O Visual Basic Express possui a funcionalidade necessária para você implantar os aplicativos do ClickOnce. É uma versão reduzida e gratuita da versão completa do Visual Studio 2005 cuja data de expiração não é igual a de um típico software de avaliação.

Neste artigo também se presume que você já tenha lido a Parte 1. Se não tiver lido a Parte 1, é recomendável fazer agora uma revisão do artigo e voltar aqui para obter informações sobre implantações mais avançadas. Este artigo também presume que você tenha noções básicas da implantação do ClickOnce, abordadas na Parte 1. Finalmente, o artigo considera já configurado o Internet Information Server (IIS) para oferecer suporte às implantações do ClickOnce, segundo as etapas listadas na Parte 1.

Na Parte 1 deste artigo, você criou um aplicativo .NET Visual Basic que utiliza o recurso .NET Framework do ClickOnce para detectar e instalar novas versões do aplicativo. Junto com o aplicativo .NET Visual Basic estava o aplicativo Visual Basic 6.0 que na verdade você desejava implantar. Na verdade, o aplicativo .NET Visual Basic não fez nada, exceto verificar novas versões e iniciar o aplicativo Visual Basic 6.0. Se você concluir as instruções passo a passo na Parte 1 deste artigo, estará pronto para continuar com as etapas aqui listadas na Parte 2. Se não tiver concluído as instruções passo a passo na Parte 1, simplesmente efetue o download do código associado a este artigo e será um bom ponto de partida para as etapas na Parte 2.

Implantações avançadas

É comum o fato de os aplicativos Visual Basic 6 utilizarem componentes COM que devem ser implantados com o aplicativo. Para o seu aplicativo encontrar os objetos COM necessários no tempo da execução, esses objetos COM devem ser registrados adequadamente. Geralmente, o instalador do seu aplicativo registrará os objetos COM necessários quando o aplicativo for instalado. Contudo, a tecnologia que está sendo usada para a implantação e atualização automática do aplicativo, conhecida como ClickOnce, não foi desenvolvida para registrar objetos COM da forma tradicional. Execute as etapas a seguir para ilustrar o problema. Você verá como esse problema pode ser resolvido e como é possível usar o ClickOnce para implantar aplicativos com objetos COM.

Criação de um objeto COM simples

  1. Efetue download dos arquivos de código para este artigo e abra a pasta MyAppLauncher - Starter.

  2. Clique duas vezes em Project1.vbp para abrir o aplicativo Visual Basic 6.0 no ambiente de desenvolvimento.

  3. No menu File, clique em Add Project.

  4. Na caixa de diálogo Add Project, selecione ActiveX Dll e clique em Open.

  5. No arquivo de código Project 2 - Class 1, insira os dados a seguir.

    Public Function HelloWorld() As String
        HelloWorld = "Hello from a DLL."
    End Function
    
    				

    Nesse ponto, você criou um objeto COM bastante simples que deve ser implantado com o seu aplicativo Visual Basic 6.0.

  6. No Project Explorer, selecione Project1 (Project1.vpb).

  7. No menu Project, clique em References.

  8. Na caixa de diálogo References, selecione Project2 e clique em OK.

  9. No Project Explorer, clique duas vezes em Form1 para abrir o designer de formulários.

  10. Na caixa de ferramentas, adicione um novo botão para Form1.

  11. Clique duas vezes no botão para gerar o manipulador de eventos. Insira o código a seguir.

    Private Sub Command2_Click()
        Dim c As Project2.Class1
        Set c = New Project2.Class1
        MsgBox c.HelloWorld
    End Sub
    
    				
  12. Pressione F5 para executar o aplicativo.

  13. Quando Form1 aparecer, clique no novo botão e verifique se o aplicativo mostra a caixa de mensagem.

  14. No menu File, clique em Make Project Group.

  15. Na caixa de diálogo Microsoft Visual Basic, clique em Build.

    O aplicativo Visual Basic 6.0 usará agora uma DLL associada ao objeto COM. Este é o momento de implantar o aplicativo Visual Basic e a DLL por meio do ClickOnce para ver o que acontece.

  16. Para implantar o aplicativo Visual Basic 6.0, ele será transportado em um aplicativo .NET Visual Basic. O Visual Studio 2005 sabe como publicar aplicativos .NET Visual Basic em um site da Web, permitindo que os usuários efetuem uma simples instalação automatizada. Uma vez instalado o aplicativo .NET Visual Basic do site da web, ele automaticamente verificará se existem novas versões correspondentes no início do aplicativo. Se houver uma nova versão disponível, o usuário será solicitado a efetuar o download da nova versão e executá-la. O aplicativo .NET Visual Basic também pode incluir "arquivos de conteúdo". Podem ser arquivos de ajuda, arquivos de banco de dados ou qualquer coisa a ser implantada junto com o seu aplicativo .NET Visual Basic. Nesse caso, os arquivos de conteúdo são o Visual Basic 6.0 executável e o objeto COM recém-criado. Sempre que o seu aplicativo Visual Basic 6.0 ou o objeto COM for alterado, você pode simplesmente publicar novamente o aplicativo .NET Visual Basic, sendo que os arquivos alterados do Visual Basic 6.0 serão novamente publicados com ele.

Implantação do aplicativo com ClickOnce

  1. Alterne para o Windows Explorer e clique duas vezes em MyAppLauncher.sln para abrir o projeto de implantação ClickOnce em Visual Studio 2005 ou Visual Basic Express.

  2. No menu Project, clique em Add Existing Item.

  3. Na caixa de diálogo Add Existing Item, na caixa Files of type, selecione All Files (*.*).

  4. Selecione Project2.dll e clique em Add.

    A DLL deve agora fazer parte da sua solução .NET Visual Basic, conforme mostrado na Figura 1.

    Figura 1. Inclusão da DLL do Visual Basic 6.0

  5. No Solution Explorer, clique com o botão direito do mouse em Project2.dll e clique em Properties.

  6. Na janela Properties, altere a propriedade Copy to Output Directory para Copy if newer.

    Esse procedimento garante que a DLL será incluída na implantação quando você criar e publicar o aplicativo .NET Visual Basic.

  7. No Solution Explorer, clique duas vezes em My Project.

  8. Clique na guia Publish.

  9. Clique em Publish Now.

    O aplicativo será publicado no seu servidor local da Web e uma página de instalação da Web será exibida, conforme mostrado na Figura 2.

    Figura 2. Página da Web de instalação de aplicativo - Clique

    ampliar a imagem

    Nesta página, qualquer pessoa pode instalar o aplicativo. Se o usuário não tiver o aplicativo .NET Framework 2.0 instalado, ele será solicitado a efetuar o download e instalá-lo. O resultado exige pouco esforço de sua parte para criar uma implantação de grande alcance, além de ser facilmente instalado pelos usuários.

  10. Clique em Install.

    O aplicativo será baixado por download, instalado e executado, conforme mostrado na Figura 3.

    Figura 3. Implantação de um aplicativo Visual Basic 6.0 com ClickOnce

    Impressionante, mas este é o ponto onde os problemas começam. Se você clicar no botão Hello, será exibida uma mensagem "Hello World" (Olá a Todos). Contudo, se você clicar no botão Call DLL, o formulário tentará usar a DLL do objeto COM criada por você no início deste artigo. O ClickOnce implantou essa DLL, mas não a registrou. Conseqüentemente, a solução do erro é mostrada na Figura 4.

    Observação: Se você instalar o aplicativo no computador onde foi desenvolvido, não verá o erro. Isso ocorre porque o objeto COM é registrado pelo ambiente de desenvolvimento do Visual Basic 6.0 quando compilado. Para ver o erro, instale o aplicativo em uma máquina diferente.

    Figura 4. Erro quando o objeto COM não pode ser encontrado

COM sem registro

Com a introdução do Windows XP, a Microsoft forneceu um mecanismo de implantação de objetos COM sem a exigência de entradas de registro. Isso permite implantar objetos COM como arquivos DLL que podem ser instalados no mesmo diretório que o seu aplicativo .exe. Se o seu aplicativo incluir um arquivo .manifest, poderá encontrar e usar os objetos COM, mesmo quando não forem registrados.

Esse recurso foi originalmente adicionado ao Windows XP para minimizar o famoso problema com a DLL ("DLL Hell"). Em resumo, o DLL Hell ocorre quando você tem um aplicativo que utiliza um objeto COM específico, e você instala um aplicativo diferente que pode substituir esse objeto COM por uma versão mais nova. Se a nova versão não for realmente compatível com versões anteriores, a instalação de um novo aplicativo eliminará o objeto existente.

Com o Windows XP, é possível instalar Assemblies lado a lado, indicando que você pode instalar inúmeras versões dos mesmos objetos COM, desde que esses objetos sejam isolados do aplicativo que os utilizar.

A implantação do ClickOnce pode usar essa funcionalidade para implantar objetos COM junto com aplicativos .NET. Quando você implanta um aplicativo .NET que utiliza objetos COM, o Visual Studio cria um arquivo .manifest que permite que o aplicativo .NET utilize objetos COM incluídos, sem exigir o registro desses objetos.

A utilização do Visual Studio para geração de um arquivo .manifest de um aplicativo .NET é simples. Esse arquivo .manifest pode ser modificado, de modo que seu aplicativo Visual Basic 6.0 obtenha a mesma funcionalidade inteligente COM sem registro.

  1. Alterne para Visual Studio 2005 ou Visual Basic Express.

  2. No Solution Explorer, clique duas vezes em My Project.

  3. Clique na guia References.

  4. Clique em Add.

  5. Na caixa de diálogo Add Reference, clique na guia COM.

  6. Selecione Project2 e clique em OK.

  7. Em References, selecione Interop.Project2 e pressione F4 para exibir a janela de propriedades.

  8. Defina a propriedade Isolated como True.

    Agora que a DLL do objeto COM foi referenciada do aplicativo do iniciador .NET, um arquivo .manifest será criado na próxima vez em que o aplicativo for publicado. Pelo fato de a propriedade Isolated ter sido definida como True, o Visual Studio sabe incluir as informações necessárias no arquivo .manifest para implantar essa DLL utilizando o objeto COM sem registro.

  9. Clique na guia Publish.

  10. Clique em Publish Now.

    Para localizar o arquivo .manifest, você precisará exibir alguns dos arquivos ocultos que são parte do seu projeto.

  11. No menu Project, clique em Add existing item.

  12. Expanda a pasta oculta bin > Debug.

  13. Na caixa Files of type, selecione All files (*.*).

  14. Selecione MyAppLauncher.exe.manifest e clique em Add.

  15. No Solution Explorer, renomeie MyAppLauncher.exe.manifest como Project1.exe.manifest.

    Esse arquivo de manifesto foi gerado para o aplicativo .NET Visual Basic, mas será modificado para funcionar no seu aplicativo Visual Basic 6.0.

  16. No Solution Explorer, clique com o botão direito do mouse em Project1.exe.manifest e clique em Properties.

  17. Na janela Properties, em Build Action, selecione Content.

  18. Em Copy to output directory, selecione Copy if newer.

  19. No Solution Explorer, clique duas vezes em Project1.exe.manifest.

  20. Edite o arquivo somente para as linhas a seguir.

    Observe as alterações nos atributos name e processorArchitecture.

    Agora você deve ser capaz de implantar o ClickOnce utilizando o aplicativo Visual Basic 6.0 e o componente COM incluído.

  21. No Solution Explorer, clique duas vezes em My Project.

  22. Clique na guia References.

  23. Remova a referência de Interop.Project2.

    Essa referência foi originalmente adicionada para fazer com que o Visual Studio gerasse as partes iniciais do arquivo de manifesto de que você precisa para o seu aplicativo Visual Basic 6.0. Agora que o Project1.manifest.exe está completo, você deve remover essa referência.

  24. Clique na guia Publish.

  25. Clique em Publish Now.

  26. Instale o aplicativo. Quando o aplicativo for executado, clique no botão que usa a DLL.

    O aplicativo deve ser executado sem erros e é preciso ver a saída mostrada na Figura 5.

    Figura 5. Aplicativo de implantação do ClickOnce e objeto COM

Conclusão

Nesta série de artigos de duas partes, você viu como criar aplicativos Visual Basic 6.0 que facilmente implantam e automaticamente detectam e instalam novas versões. Essa funcionalidade é gratuita com o .NET Framework 2.0, e pode ser alavancada com o transporte de um aplicativo Visual Basic 6.0 para um simples aplicativo iniciador .NET Visual Basic. Nesse artigo, você também viu como implantar objetos COM com o seu aplicativo Visual Basic 6.0. Os objetos COM são isolados do aplicativo com o uso do objeto COM sem registro, uma tecnologia disponível em Windows XP e futuros sistemas operacionais.

Sobre o autor

Scott Swigart passa seu tempo prestando consultoria, criando e falando sobre tecnologias emergentes e convergentes. Com a experiência de desenvolvimento por mais de 15 anos, e o constante contato com futuras tecnologias de desenvolvimento de software, Scott consegue ajudar as organizações a obter o máximo da tecnologia hoje existente, enquanto se prepara para alavancar a tecnologia do amanhã. Scott é também o autor de vários livros sobre o .NET; é instrutor (MCT) e desenvolvedor (MCSD) certificado pela Microsoft, além de ser um Microsoft MVP. Sinta-se à vontade para entrar em contato com Scott em scott@swigartconsulting.com, ou verifique suas mais recentes aspirações em blog.swigartconsulting.com.

Mostrar: