Distribuindo sua aplicação usando o Package and Deployment Wizard


Bem , você acabou de ler aquela 'Biblia' sobre o Visual Basic e já esta se sentindo um programador profissional ; mandou fazer os cartões com os dizeres: "Desenvolvedor Visual Basic" e já tem planos para conquistar o mercado com seus sistemas.Ai você lembrou que o livro não falou nada sobre como distribuir a sua aplicação; então você entrou em pânico e...

Calma, vamos abordar este assunto um tanto esquecido e procurar passar os conceitos básicos envolvendo a distribuição de sua aplicação Visual Basic , afinal seu talento não pode ficar escondido. Só vou pedir paciência pois não tenho tempo de escrever o artigo todo de uma vez (já perceberam isso , não é ???) , mas devagar chegamos lá. Então vamos começar pelo começo....

1- Definindo as propriedades do seu projeto

Uma das primeiras coisas que você , como um profissional , pode fazer é atribuir á sua aplicação informações sobre: o nome de sua empresa, o número da versão , o número da revisão e etc... O Visual Basic permite a você armazenar todas essas informações através da utilização do objeto App . O objeto App é um objeto pré-definido que não necessita ser criado pela sua aplicação.

A seguir na tabela 1, temos as propriedades mais comuns do objeto APP usadas para atribuir informação a sua aplicação.

TABLE 20.1  Propriedades mais comuns do objeto App

Propriedade Descrição
Comments Retorna uma string contendo comentários sobre a sua aplicação. Acessível em tempo de execução.
CompanyName Informa o nome da empresa ou do desenvolvedor. Acessível em tempo de execução.
EXEName Informa o nome do arquivo .EXE sem extensão .
FileDescription Uma string que descreve o propósito da aplicação.
HelpFile Define o arquivo de Help associado a aplicação.
LegalCopyright Informa a notificação de copyright notification string.
Major Informa a maior número da versão (Ex:, informa 3 em 3.2).
Minor Informa o menor número da versão (Ex: informa 3 em 4.3).
Path Informa o diretório de inicialização da aplicação.
PrevInstance Retorna um valor se uma instância da aplicação já esta sendo executada.
Product Name Retorna o nome do produto associado a aplicação.
Revision Informa o número da revisão da aplicação

Esta propriedades são definidas na janela de diálogo Project Properties do Visual Basic.

Você pode definir as propriedades de sua aplicação nos tópicos:

1-Version Number: a Maior (Major) a Menor(Minor) e revisão(Revision). Definindo também se elas serão autoincrementadas.

2-Application : o Titulo (Title) e o Ícone (Icon)

3-Version Information: Comments, Company Name, File Description, Legal Copyright, etc..

Após definir as propriedades podemos acessá-las quando o projeto estiver em execução usando código Visual Basic. Podemos acessar essas informações clicando com o botão direito do mouse sobre o arquivo EXE da aplicação e selecionando Propriedades do menu. Ver figura abaixo:

Propriedades definidas para o projeto vbbrowser.

Basta clicar com o botão direito do mouse sobre o arquivo EXE da aplicação e selecionar propriedades do menu suspenso.

Os valores das propriedades do objeto App estão embutidas em formato binário dentro do arquivo EXE da aplicação e por isso não podem se alteradas em tempo de execução.

Vejamos como ler as propriedades atribuidas ao objeto App em tempo de projeto usando código Visual Basic

Acessando as Propriedades do objeto APP via Código

Private Sub Form_Load()
 Dim strVerNum
 strVerNum = CStr(App.Major) & "." & CStr(App.Minor) & "." & CStr(App.Revision)
 
  lblnome.Caption = App.ProductName
  lblversao.Caption = strVerNum
  lblpath.Caption = App.Path
  lblempresa.Caption = App.CompanyName
  lblcomentarios.Caption = App.Comments
  lbldescricao.Caption = App.FileDescription
  lbltrademark = App.LegalTrademarks
  lblcopy.Caption = App.LegalCopyright
End Sub

O código acima tem o seguinte resultado :

Percebeu a importância de conhecer as propriedades do objeto App ?

Compilando o seu projeto

Antes de ser compilado , o seu projeto é uma coleção de arquivos texto e gráficos que foram criados na Interface do Visual Basic (IDE - Integrated Development Environment ). Para poder executar o seu projeto independentemente da IDE , voce tem que transformar estes arquivos em um arquivo executável , a este processo chamamos compilação ou criação de um executável .

O Visual Basic 6.0 suporta dois formatos no qual você pode compilar o seu código: P-code ou native code.

Ao compilar o seu projeto na opção P-code, o arquivo executável gerado irá atuar como um código interpretado. Isto significa que o código será lido por um mecanismo, os arquivos DLL's de runtime, que determina qual instrução executar.

Compilando no modo native code , os arquivos do projeto são transformados em um código binário que usa as características do processador da sua máquina. Este código é executado com mais rápide , mas ainda vai precisar das Dlls de runtime, sendo que a única diferença é que as DLL são acessadas e usadas de modo diferente pelo arquivo executável criado.

Para compilar o seu projeto no formato Standard EXE , siga o roteiro abaixo:

  1. Abra o projeto que você deseja compilar
  2. Selecione a opção Make Nome_do_seu_projeto.EXE do menu File. A janela de diálogo Make Project irá surgir.
  3. Informe o nome que deseja dar ao seu arquivo executável
  4. Clique no botão Options para abrir a janela Project Proprierties. Na página Compile selecione P-Code ou Native Code.
  5. Click em OK em ambas as janelas para compilar o seu projeto.

Será gerado um arquivo com extensão .EXE que poderá ser executado fora do ambiente IDE do Visual Basic mas que ainda não esta completamente pronto para ser executado em um computador que não tenha o Visual Basic instalado.

Usando o Package and Deployment Wizard

Após criar sua aplicação você pode distribuí-la a terceiros , e pode fazer isto em discos, CDS , através de uma rede , em uma intranet ou na internet.

Você pode usar duas ferramentas para gerar o pacote de instalação e distribuir suas aplicações : The Package and Deployment Wizard ( antigo Setup Wizard) ou o Setup TooKit fornecido com o seu Visual Basic.

O Package and Deployment Wizard veio substituir o Setup Wizard , e com ele podemos criar nosso pacote de instalação para qualquer tipo de aplicação criada com o Visual Basic.

Para começar inicie o Visual Basic e no Menu Add-Ins , verifique se o Package and Deployment consta como uma opção do menu (fig 1.0) . Se esta opção não estiver listada , você vai ter que instala-lá clicando na opção Add-In Manager e selecionando o Package and Deployment para ser carregado ao iniciar o VB (Load on Startup).(fig.2.0)

Obs: Voce pode iniciar o Package and Deployment Wizard a partir do menu Programas -> Microsoft Visual Studio 6.0 -> Microsoft Visual Studio Tools - > Package & Deployment Wizard.

fig 1.0 - O Package and Deployment no menu Add-Ins
fig 2.0 - Instalando o Package and Deployment Wizard no menu Add-Ins

Criando um pacote para instalação

Para criar um pacote de instalação, vamos iniciar o Visual Basic e carregar o projeto para o qual desejamos gerar a instalação. Escolhemos o projeto App.vbp que exibe as propriedades app , as etapas são as seguintes:

1-) Inicie o Package and Deployment Wizard a partir do menu Add-Ins. O nome do projeto carregado é indicado em Active Project:

2-) Vamos selecionar a opção Package , pois queremos montar discos de instalação para distribuição em discos de 1.44 Mb. Se o projeto não foi compilado o wizard avisa o usuário e dá a opção para compilação

3-) A tela a seguir é exibida solicitando ao usuário que escolha entre criar um pacote para ser instalado pelo programa setup.exe - Standard Setup Package ; ou criar um um arquivo com uma lista de informações sobre os componentes exigidos pela aplicação - Dependency File.Vamos escolher a primeira opção.

4-) A próxima tela solicita que você indique em qual pasta voce vai armazenar os arquivos criados pelo wizard para montar o seu pacote de instalação.

5-) A seguir temos a tela onde os arquivos necessários para a instalação são exibidos. Para incluir outros arquivos necessários a sua aplicação tais como: arquivos de ajuda, banco de dados, etc... clique no botão Add... e selecione o arquivo que você vai incluir em seu pacote de instalação.

Existem três tipos de arquivos necessários que irão compor o pacote de instalação:

6-) Na próxima etapa devemos escolher o tamanho do arquivo para distribuição. Podemos escolher gerar um único arquivo cab ou múltiplos cabs . Esta última opção permiter gerar tantos cabs quantos necessários ao tamanho por nós escolhido. Vamos selecionar a opção Multiple cabs e para cab size 1.44 MB.

Obs: Os CABs (cabinets files) são um tipo de arquivo especial criado pela Microsoft ; eles são parecidos com os ZIP files. O WINZIP versão 7.0 permite visualizar o conteúdo de um arquivo CAB .

7-) A seguir indique o titulo que deseja usar em sua aplicação, ele será exibido durante a instalação.

8-) A tela a seguir especifica o grupo para os ícones e os ícones a serem criados. Eles identificarão sua aplicação e permitirão o acesso a sua aplicação. Como nossa aplicação terá somente um ícone , vamos remover o grupo gerado com o título dada aplicação e criar um grupo e item de programa com o nome do nosso projeto - App. Perceba que você pode finalmente escolher o grupo de programas e os itens pertecentes ao grupo.

9-) A proxima tela permite que voce altere a localização de cada arquivo que não for requerido pelo sistema. Todos os arquivos do sistema são automaticamente instalados no diretorio \Windows\System. Vamos deixar inalterado o local indicado pelo wizard.

O significado das macros mostradas em - Install Location - é dado na tabela abaixo:

Nome da Macro Diretório de destino
$(AppPath) Diretório da aplicação informado pelo usuário
$(ProgramFiles) Diretório no qual as aplicações são geralmente instaladas
$(CommonFiles) Diretório de instalação dos arquivos compartilhados
$(WinPath) Diretório usado pelo Windows
$(WinSysPath) Diretório System do Windows
$(MSDAOPath) Local armazendo no registro do Windows para a DAO
$(Font) Diretório da Fontes

10-) Certos arquivos tais como DLL's e OCXs são considerados arquivos compartilhados. Se estivermos instalandos estes arquivos como parte de nosso pacote de instalação podemos marcá-los como compartilhados de maneira que quando houver uma desinstalação da aplicação os arquivos compartilhados serão verificados antes de serem removidos. No nosso casso o arquivo app.exe não é compartilhado portanto vamos clicar em Next >.

11-) Finalmente podemos dar um nome ao script gerado e clicar no botão Finish. O wizard irá criar os arquivos cab necessários a sua instalação e irá gerar um relatório com algumas mensagens sobre a instalação. Leia e a seguir feche o relatório e o Wizard clicando em Close.

Pronto ! , os seus arquivos foram gerados no diretório package como indicado no wizard. Para o nosso caso os arquivos gerados estão listados na figura abaixo: App1.cab , App2.cab , setup.exe e setup.lst e o diretório Support. Voce pode escolher um nome para o arquivo de script, ele armazena todas as opções selecionadas por você e pode ser reutilizado para gerar novamente o seu pacote.

Para você montar os discos de instalação faça o seguinte:

  1. No primeiro disco copie os arquivos setup.exe e setup.lst e o arquio app1.cab
  2. No segundo disco copie o arquivo app2.cab

Agora é so TESTAR e distribuir...

Descrevendo o contéudo do arquivo Setup.lst

O PDW usa a informação localizada no arquivo Setup.lst(ele é um arquivo texto que pode ser editado e visualizado por qualquer editor de textos) no processo de instalação. Este arquivo contém toda a informação sobre a aplicação que vai ser instalada ele é criado quando o PDW é utilizado para gerar o pacote de instalação e esta localizada no mesmo diretório que o arquivo Setup.exe.

O processo de instalação de uma aplicação tem basicamente duas partes:

O arquivo Setup.lst descreve todos os arquivos que precisam ser instalados e contém informação importante para o processo de instalação: nome dos arquivos, local de instalação , etc... Existem cinco secções principais no Setup.lst , as quais são:

  1. BootStrap Section - contém o nome do principal arquivo de setup, o diretorio temporário a ser usado, e o texto que aparece durante o inicio do processo de instalação: Abaixo temos um exemplo de uma secção do BootStrap
[Bootstrap]
 SetupTitle=Install
 SetupText=Copying Files, please stand by.
 CabFile=Hello.CAB
 Spawn=setup1.exe
 Uninstal=st6unst.exe
 TmpDir=msftqws.pdw
 Cabs=1 

Vejamos o significado de cada item:

  • SetupTitle - O nome que aparece na tela azul quando o PDW inicia a segunda parte do setup -Setup1.exe.
  • SetupText - Texto exibido aos usuários durante a copia dos arquivos para o Setup1.exe iniciar.
  • CabFile - O nome do arquivo contendo todos os arquivos a serem instalados.
  • Spawn - O nome da segunda aplicação Setup a ser executada. Geralmente é o arquivo Setup1.exe.
  • Uninstal - O nome da aplicação para desinstalação
  • TmpDir - Indica o diretório temporário usado pelo Setup para instalar os arquivos.
  • Cabs - O número total de arquivos Cab na aplicação
    1. BootStrap Files Section - contém a relação detodos os arquivos requeridos pelo principal arquivo responsavel pela instalação para rodar a segunda parte da instalação. A seguir um exemplo de uma secção BootStrap Files:
    [Bootstrap Files]
       File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,6/13/98 12:00:00
       AM,103424,6.0.81.64
       File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5/31/98
       12:00:00 AM,22288,4.71.1460.1
       File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,6/11/98
       4:07:22 PM,17920,2.30.4261.1
       File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,6/11/98 4:07:22
       PM,147728,2.30.4261.1
       File5=@OLEPRO32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6/11/98
       4:07:23 PM,164112,5.0.4261.1
       File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6/11/98
       4:07:24 PM,598288,2.30.4261.1
       File7=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,6/13/98
       12:00:00 AM,1409024,6.0.81.64 					

    Cada linha da secção acima é composta dos seguintes argumentos:

    File#=Nome Arquivo, Install Macro, Registro, Compartilhar, Data, Tamanho, Versão

    1. Setup1 Files Section - Contém a relação de todos os demais arquivos requeridos pela aplicação: arquivos exe, arquivos de dados, arquivos de texto, etc...Veja exemplo de uma secção Setup1 Files
     [Setup1 Files]
       File1=@Hello.exe,$(AppPath),,,6/17/98 11:58:25 AM,16384,1.0.0.0
       ; The following lines may be deleted in order to obtain extra
       ; space for customizing this file on a full installation diskette.
       ;
       ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
    1. Setup Section - Contém a informação necessária pelos outros arquivos na instalação. Veja exemplo da secção Setup a seguir:
    [Setup]
       Title=Hello
       DefaultDir=$(ProgramFiles)\Hello
       AppExe=Hello.exe
       AppToUninstall=Hello.exe 

    Cada item tem o seguinte significado:

  • Title=Hello - Permite a customizacao do título mostrado exibido durante a instalação.
  • DefaultDir=$(ProgramFiles)\Hello - Indica o diretorio padrão da instalação.
  • AppExe=Hello.exe - O nome da aplicação principal que será instalada
  • AppToUninstall=Hello.exe - Principal aplicação que será desinstalada
    1. Icon Groups section - contém informação sobre os grupos que serão criados na instalação. Abaixo um exemplo da secção IconGroups
     [IconGroups]
       Group0=Hello
       PrivateGroup0=True
       Parent0=$(Programs)
       Group1=Another Group
       PrivateGroup1=True
       Parent1=$(Start Menu)
    
       [Hello]
       Icon1="Hello.exe"
       Title1=Hello
       StartIn1=$(AppPath)
    
       [Another Group]
       Icon1="Another.exe"
       Title1=Another Icon
       StartIn1=$(AppPath) 

    Cada item tem o significado a seguir:

  • Group0=Hello - Nome da seção do Grupo de Programas a ser criado . Aqui o nome será- "Hello"
  • PrivateGroup0=True - Indica se o grupo é privado ou comum non Microsoft Windows NT 4.0 ou superior.
  • Parent0=$(Programs) - A posição no menu Iniciar onde o Grupo será criado. Os Grupos podem somente ser criados ou em $(Start Menu) ou em $(Programs) ( macro installation)
  • Group1=Another Group - Nome da seçao do Grupo de Programa a ser criado . Aqui o nome será "Another Group."
  • PrivateGroup1=True - Indica se o grupo é privado ou comum non Microsoft Windows NT 4.0 ou superior
  • Parent1=$(Start Menu) - A posição no Menu Iniciar onde o grupo será craido. Os Grupos podem ser criados ou em $(Start Menu) ou em $(Programs) .
  • O Setup Toolkit

    O Setup Toolkit é um projeto instalado com o Visual Basic que é usado pelo PDW quando ele cria o programa de instalação (Setup) . O projeto Setup Toolkit contém formulários e código que o programa de instalação criado usa para instalar os arquivos de sua aplicação no computador do usuário. Quando você usa o PDW, ele inclui o arquivo setup1.exe que o projeto Setup Toolkit cria. Este arquivo é usado como a principal aplicação do arquivo de instalação.

    Podemos usar o Setup Toolkit para modificar as telas exibidas durante o processo de instalação , ou criar um programa de instalação diretamente. Podemos customizar o programa de instalação e adicionar alguma funcionalidade não incluida ou suportada pelo PDW.

    O projeto do Setup Toolkit esta localizado no subdiretório \Wizards\PDWizard\Setup1 do diretório principal onde foi instalado o Visual Basic. (Antes de realizar qualquer alteração nos arquivos de projeto faça um backup destes arquivos)

    Usamos o Setup Toolkit carregando o arquivo Setup1.vbp no Visual Basic e fazendo as modificações que desejamos. Isto é feito em duas etapas:

    Para criar um programa de instalação customizado usando o Setup Toolkit você pode seguir os seguintes passos:

    1. Faça um backup dos arquivos do Setup Toolkit
    2. Realize as alterações que julgar necessárias
    3. Determine os arquivos que você quer distribuir
    4. Determine onde instalar os arquivos no computador do usuário
    5. Determine como você fará a distribuição dos arquivos
    6. Crie os arquivos .cab para o seu projeto usando o utilitário Makecab.
    7. Crie o arquivo Setup1.exe para o seu projeto compilando o arquivo de projeto que você alterou.
    8. Copie seus arquivos , montando os discos para instalação

    Como customizar minha instalação ?

    Vamos dar um exemplo de como customizar a instalação , criando uma opção de instalação que irá perguntar ao usuário se ele deseja instalar o arquivo de ajuda. Vejamos como fazer isto passo a passo:

    1. Carregue o arquivo de projeto Setup1.vbp , e edite o código do evento Form_Load no formulário Setup1.frm. E inclua o código abaixo depois da linha de código que chama a função ShowBeginForm . Veja figura abaixo:

    O código a ser incluído é o seguinte:

    Dim LoadHelp As Integer
    LoadHelp = MsgBox ("Deseja instalar o arquivo de ajuda? ", vbYesNo)
    If LoadHelp = vbYes Then
       CalcDiskSpace "Help"
    EndIf
    
    If LoadHelp = vbYes Then
       cIcons = CountIcons("Help")
    EndIf
    If LoadHelp = vbYes Then
       CopySection "Help"
    EndIf
    1. Feche o arquivo setup1.frm , e salve o formulário e o projeto alterado e compile-o para criar o arquivo setup1.exe.
    2. Voce vai precisar incluir uma nova seção usada pelo seu arquivo de ajuda em CopySection no arquivo Setup.lst, pode ser algo como:
    [Help]
    File1=MyApp.HL1,MyApp.HLP,$(AppPath),,,10/12/96,2946967,0.0.0

    Se você esta pensando em executar e testar o programa alterado no Visual Basic para debugá-lo , vai ter uma surpresa. Você nao vai conseguir!!. Antes de rodar o projeto o arquivo Setup.exe deve copiar certos arquivos para locais diferentes , além disto ele chama o arquivo Setup1.exe com certos argumentos de linha de comando que voce vai precisar fornecer. Vejamos a rotina passo a passo:

    1. Execute o PDW , e siga os passos para produzir um arquivo de instalação (Setup) padrão.
    2. Edite o arquivo Setup.lst e faça as seguintes alterações:
    Visual Basic 5.0
    Localize a linha:
    Setup=setup1.exe 
    substitua por:
    Setup="c:\program files\devstudio\vb\vb5.exe"_
          "c:\program files\devstudio\vb\setupkit\setup1\setup1.vbp" /cmd 
    
    ---------------------------------------------------------------------
    Visual Basic 6.0
    
    Localize a linha:
    Spawn=setup1.exe 
    Substitua por:
    Spawn=C:\PROGRA~1\MICROS~1\VB98\VB6.exe_ 
    C:\PROGRA~1\MICROS~1\VB98\Wizards\PDWizard\Setup1\Setup1.vbp /cmd 
    
    1. Salve o arquivo Setup.lst
    2. Inicie a instalação executando o Setup.exe
    3. Após a execução do Setup.exe terminar ele irá iniciar o Visual Basic e carreguerá o arquivo setup1.vbp .
    4. Insira os break points nas linhas de código onde deseja depurar o programa e execute o projeto.

    Obs: Se você sair do projeto ou se ele rodar sem erros o arquivo ao terminar , o arquivo setup.lst e o programa para desinstalação serão excluidos.

    Acabei...

    Leia também :

    Usando o Setup Wizard

    Package and Deployment Wizard - Gerando uma instalação em português


    José Carlos Macoratti