Criando projetos de Setup : O que mudou ?

 

Uma das grandes mudanças para os usuários do Visual Basic na versão .NET foi a maneira de como distribuir e instalar suas aplicações . As coisas ficaram mais simples  , pelo menos até você compreender como as coisas funcionam no VB .NET.

 

Se você ainda se sente meio perdido com a nova plataforma e não sabe como criar um simples instalador para seus programas VB .NET neste artigo eu pretendo dar uma mãozinha para você poder entender como as coisas funcionam. (Leia o artigo Gerando meu primeiro pacote de instalação no VB.NET para saber mais a respeito.)

 

Primeiro vou tentar convencê-lo das vantagens que a nova plataforma .NET trouxe para geração de arquivos de distribuição para o VB .NET:

  1. Nada de COM com seus problemas de compartilhamento de componentes. Os grupos são a substituição da Microsoft para os componentes e os tradicionais arquivos de aplicativo, incluindo metadados internos afim de evitar o tão conhecido 'inferno das DLLs'.

  2. Nada de registros de componentes. Com os grupos você não precisa mais se preocupar com o registro para manter a atualização e as informações sobre os seus componentes. Agora todas elas são armazenadas nos arquivos de programas , desta forma você pode copiar aplicativos e componentes de um computador para outro sem se preocupar com versões.

  3. Adeus a ferramentas de terceiros para gerar seu instalador. No VB6 o PDW - Package and Development Wizard - não oferecia muitas opções de personalização na geração de um instalador . O .NET oferece projetos de inicialização e Setups com muitos recursos que você inclui nos seus aplicativos.

Tradicionalmente suas aplicações VB eram compostos de componentes que eram distribuídos como arquivos .EXE ou DLL , que podiam usar outros componentes como arquivos .dll , arquivos .ocx (só para citar os mais usados). Geralmente estes componentes ficavam 'espalhados' pelo seu computador (geralmente na pasta do diretório de sistema do Windows). Então para tudo funcionar corretamente todos os arquivos teriam que estar presentes com suas versões mais atuais.

 

Na plataforma .NET (estou incluindo o VB .NET) você também vai achar arquivos .DLL e .EXE além dos componentes COM (por questão de compatibilidade)  ,  mas , existe uma diferença importante : Eles agora são conhecidos como :  assemblies (vou chamar de grupos). Um assembly ou grupo (na minha tradução ) é como se fosse uma DLL lógica e corresponde a um componente do aplicativo , ou seja ele é composto por todas as funções e recursos que você usou na sua aplicação e quando você compila a sua aplicação tudo fica dentro de um arquivo .EXE formando um único grupo ou assembly. Naturalmente você pode criar mais de um grupo para sua aplicação. Quais as vantagens ?

Nota : A GAC - Global Assembly Cache -  é uma área dedicada ao armazenamento de grupos disponíveis para todo o sistema. O .NET não usa mais um diretório de sistema onde estão drivers  e outros dispositivos do sistema ele usa a GAC para armazenar os grupos para sua aplicação.  Ao usar COM um componente tinha que fazer parte do registro global para ser usado. Se você desenvolve o seu próprio componente não vai precisar usa a GAC  basta copiá-lo  no diretório do seu aplicativo. Use a GAC para componentes que deseja tornar globalmente disponíveis. Vamos dar uma olhada na GAC ?? Procure a pasta \Windows\assembly ou \WINNT\assembly : você vai ver algo parecido com a figura abaixo:

 

Voltando aos grupos(assemblies) , vou mostrar como você pode ver o seu aplicativo como um grupo. Todos os aplicativos que você criou até agora usando o VB .NET são grupos . Vamos dar uma espiada em um deles usando o programa ILDasm.exe (IL Disassembler). Você encontra este arquivo na pasta : \Arquivos de programas\Microsoft Visual Studio .NET\FrameworkSDK\Bin . Veja na figura abaixo :

 

 

Acima , na figura da esquerda esta a pasta com o arquivo ildasm.exe , e na figura da direita  temos a execução do arquivo abrindo um grupo arquivo .EXE ou .DLL) que eu já tinha criado no VB .NET . Temos uma árvore mostrando informações sobre o aplicativo - ADO_net.exe - e sobre os tipos definidos nos metadados do grupo. Se você clicar duas vezes sobre um método ou propriedade vai ver a lista de instruções .NET criadas com base no seu código de programa. Abaixo o código para a propriedade get_DataGrid1

 

 

Lembra do arquivo de manifesto de que tinha falado ? Ele esta no topo da árvore , e , se você clicar duas vezes sobre ele vai ver informações sobre a versão do seu grupo , dependências (declarações assembly extern) , etc:

 

 

Analisando as informações acima podemos ver que este grupo vai precisar do grupo System.Data para funcionar e que a versão usada é a : 1:0:3300:0 ( o formato é : maior.menor.construção.revisão ).

 

As informações sobre  nome , número da versão , etc. estão no arquivo AssemblyInfo.vb. Abrindo este arquivo para o grupo que estamos analisando veremos as seguintes informações:

 

Imports System.Reflection

Imports System.Runtime.InteropServices

' General Information about an assembly is controlled through the following

' set of attributes. Change these attribute values to modify the information

' associated with an assembly.

' Review the values of the assembly attributes

<Assembly: AssemblyTitle("")>

<Assembly: AssemblyDescription("")>

<Assembly: AssemblyCompany("")>

<Assembly: AssemblyProduct("")>

<Assembly: AssemblyCopyright("")>

<Assembly: AssemblyTrademark("")>

<Assembly: CLSCompliant(True)>

'The following GUID is for the ID of the typelib if this project is exposed to COM

<Assembly: Guid("CAAB0256-70AF-455E-AC76-F99807D82E9B")>

' Version information for an assembly consists of the following four values:

'

' Major Version

' Minor Version

' Build Number

' Revision

'

' You can specify all the values or you can default the Build and Revision Numbers

' by using the '*' as shown below:

<Assembly: AssemblyVersion("1.0.*")>

 

Para recuperar informações sobre o grupo ( versão atual , nome , etc...) podemos usar a classe System.Windows.Forms.Application (que substitui objeto App do VB6/5) e , se você quiser ir mais além pode usar a classe System.Reflection.Assembly  para recuperar informações sobre um grupo.

 

Percebeu agora como as coisas mudaram !!!

 

Se você se deixou se convencer vamos passar a apresentar os diferentes tipos de Setup presentes no Visual Basic .NET. Para ver os projetos de Setup ,  acesse o menu File | New | Project , selecione a seguir : Setup and Deployment Project e verá a figura abaixo os modelos de projeto de Setup.

 

 

Vamos abordar cada um deles para você se familiarizar :

  1. Setup Project - O projeto principal de Setup

  2. Web Setup Project - Projeto de Setup que instala projetos diretamente no IIS - Internet Information Server.

  3. Cab Project - Cria arquivos .CAB.

  4. Merge Module Project - Cria pacotes que podem fazer parte de outros projetos de Setup.

  5. Setup Wizard - Um assistente que o auxilia a criar um dos projetos já mencionados.

vai continuar...

 


José Carlos Macoratti