Esse artigo faz parte da revistaClube Delphi edição 10. Clique aqui para ler todos os artigos desta edição




Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.

Install Shield

O guia final para esse aplicativo de instalação


No fechamento desta edição, havíamos colocado em pauta a criação de uma matéria sobre ferramentas de instalação. Nossa idéia inicial era realizar um comparativo entre as principais aplicações existentes, elegendo o utilitário ideal para o Delphi. Porém, por falta de espaço (e de tempo) acabei tomando um caminho mais prático - resolvi criar um pequeno tutorial do InstallShield. Nas próximas edições eu prometo redigir a matéria sobre outros aplicativos de instalação.

Acredito que este é um artigo "para toda a família": pois será apreciado por grande parte dos leitores, desde os que nunca utilizaram até os que já adotaram o instalador. Veremos, por exemplo, como definir arquivos não atualizáveis - um banco de dados, não pode ser sobreposto na instalação. A grande dúvida de configuração do BDE também é eliminada, além de um breve comentário a respeito da instalação customizada.

O InstallShield utilizado nesta matéria é o que acompanha a caixa do Delphi 5, chamado InstallShield Express v2.02. Muita gente não sabe, mas o InstallShield é um produto completo, que existe inclusive há muito tempo (antes do surgimento do Delphi), e que possui outras versões. A empresa ainda fornece outros aplicativos, como o DemoShield, uma ótima ferramenta para construção de aplicativos de demonstração do produto - aqueles em que o mouse se movimenta sozinho, explicando o uso do software. Outros também interessantes são o NetInstall que permite a instalação e configuração de aplicativos remotamente, e o PackageForTheWeb - um conjunto de soluções para instalação e upgrade de aplicativos diretamente da Internet.

Portanto, é comum observar recursos utilizados em instalações de aplicativos encontrados no mercado, que a princípio não podem ser reproduzidos na versão do InstallShield que acompanha o Delphi. Este tipo de recurso certamente será encontrado nas outras versões do InstallShield, a Professional 6.0 ou a Windows Installer, que são pagas. Os preços variam de U$ 95 a U$ 1.195.

O site do fabricante é bem completo. Caso queira obter maiores informações, não deixe de visitar em www.installshield.com, pois é possível inclusive realizar downloads de versões demo dos produtos.

Este artigo foi desenvolvido no velho estilo "stepping", ou seja, passo a passo. Portanto, nada mais justo agora do que inicializar o seu InstallShield:



Nota: As versões do InstallShield que acompanham o Delphi desde a versão 2 sofreram pequenas modificações. Neste momento não iremos nos prender a isto, deixando a seu próprio cargo a tarefa de associar os recursos aqui demonstrados às versões anteriores do aplicativo.


Ao abrir o InstallShield, a janela Welcome será exibida. Escolha a opção "Create a new Setup Project".



Pressione OK para exibir a janela NewProject. Após escolher o nome do arquivo e o diretório em que ele será salvo, marque a opção "Include a custom setup type". Clique em "Ok" para abrir a tela a seguir.



Esta é a tela principal do Install Shield. Através dela iremos começar passo a passo a personalizar a instalação de nosso aplicativo exemplo.


Arquivos usados na instalação:


Executável do projeto "ClubeDelphi.exe":

Banco de Dados em paradox.

Alguns arquivos de sistema.

Arquivo Ajuda (hlp)

Alguns arquivos de imagens


Primeiramente, clique no item "Application Information" para abrir a janela abaixo:



Esta janela é responsável pelas configurações básicas do instalador.


Descrições da Tela:


Application Name: Determina o nome do seu arquivo Setup. No exemplo usaremos OpcInstall.

Application Executable: Aparte o botão "Browse" para procurar o executável do seu projeto Delphi. "ClubeDelphi.exe" .

Version: Determina a versão do seu projeto. Neste exemplo, insira "1.0"


Company: Determina a empresa responsável pela construção do projeto.

Default Destination Directory: Determina em que diretório seu projeto será instalado. Neste caso ele será instalado em "ProgramFilesDir" (Arquivos de Programas do micro destino) no sub-diretório "OpcInstall".


Agora clique na Segunda Aba, "Main Window". Esta tela define o background do aplicativo de instalação:



Em "Main Title" você pode definir um texto ou bitmap, que podem representar o título do seu programa.

Em "Logo Bitmap" escolha um logotipo de sua empresa. Este poderá ser alinhado em "Position".

Defina a cor de fundo da tela de instalação em "BackgroundColor".

Passemos agora para a aba "Features". Esta opção tem um CheckBox "Automatic Uninstaller" que definirá se sua aplicação possuirá um desinstalador próprio:



De OK nessa janela e volte para a tela inicial do Install Shield.


Escolha a opção "General Options".


A janela a seguir pode poupar bastante trabalho do desenvolvedor. Certos tipos de componentes ou recursos do Delphi necessitam que DLLs, arquivos ou alterações no registro sejam copiadas para a máquina do usuário. O InstallShield cuida de todo o trabalho, bastando selecionar os componentes ou recursos utilizados no aplicativo.



Em nosso exemplo virtual, iremos utilizar os pacotes:

BDE Control Panel File

BDE (Borland Database Engine)

Ao selecionar a opção BDE, a janela de configuração será exibida:



Repare que a opção Partial BDE Installation foi selecionada, com o respectivo driver do Paradox marcado. Em seguida, clique no botão Avançar. A jaela de aliases será exibida:



Neste momento devemos indicar quais aliases serão criados no BDE do usuário. Clique no botão New, e digite o nome do alias a ser criado. Novamente, clique no botão avançar:



Esta janela indaga se o arquivo de configuração deverá manter compatibilidade com versões anteriores do BDE. Neste exemplo esta opção não será selecionada. Clique no botão avançar, para exibir a janela a seguir:



Esta é a última janela de configuração - Vejamos como preenchê-la:


Alias Name:Nome do alias a ser criado.


Path: Caminho do banco de dados que será associado ao alias - repare que a chave \database é utilizada, indicando que o caminho do banco de dados será o subdiretório database, criado dentro do diretório de instalação, definido na janela Application Information. Isto é muito útil, pois mesmo se o usuário alterar o diretório de instalação, o alias do banco de dados continuará apontando para o subdiretório correto.

Type: Tipo do banco de dados. No exemplo, Paradox.


Nota: Existe muita confusão na hora de configurar a propriedade Path - pois muitos desconhecem as tags de instalação. Veja abaixo uma descrição detalhada das possíveis tags de diretório:


Diretório principal de instalação do aplicativo.

Diretório principal do Windows, na máquina do usuário


Diretório de sistema (comumente localizado em C:\windows \system) do windows


No windows NT, representa o repositório de DLLs 16-bits (geralmente c:\windows\system).

Letra do drive que contém o windows (geralmente, será C:).


Letra do drive contendo o diretório windows\system.


Representa o diretório Arquivos de Programas.


Representa o diretório de arquivos comuns (geralmente, c:\Program files\Common Files).


Diretório de fontes do sistema.


Diretório de origem dos arquivos. Por exemplo, se o aplicativo estiver sendo instalado a partir do drive D:, esta cláusula irá representar o drive D:.


Nota2: Os campos Name, Path e Type são obrigatórios. Se não forem todos preenchidos, o alias não será criado na máquina do usuário. Se o aplicativo utilizar um banco de dados que não necessite a informação do campo PATH (com por exemplo, o SQL SERVER), preencha-o mesmo assim, com o valor .


Após dar Ok na janela de configuração de BDE, clique na Aba "Advanced Options". Você verá os componentes que foram marcados e suas especificações como caminho do path, tamanho, data e versão. Aqui pode observar os arquivos que serão copiados a partir de cada grupo de componentes selecionados. Dê OK para fechar esta janela.



O próximo item se chama Group and Files. Neste ponto poderemos definir o tipo de instalação que teremos. Vamos ver como isso funciona:



Esta janela fornece um conceito muito interessante: é possível definir grupos de arquivos, tendo cada grupo suas próprias características. Por exemplo, nosso aplicativo pode possuir o grupo database, contendo os arquivos referentes aos dados. Podemos criar outro grupo chamado documentação, contendo todos os arquivos de ajuda. Além de possuírem destinos diferentes, estes grupos também terão propriedades de permanência diferentes. Ao atualizar o aplicativo, o banco de dados não deverá ser sobreposto. Já os arquivos de ajuda geralmente serão. Vejamos como manipular os grupos do InstallShield.


Na lista File Groups os grupos de arquivos serão listados. Repare que três pastas já são automaticamente criadas:

"Program Files" , "BDE/IDAPI Files" e "BDE/IDAPI CNF Files". A pasta Program Files sempre é criada e as outras duas são referentes à instalação do BDE na máquina do usuário. Como exemplo, vamos criar um grupo para os arquivos de ajuda. Clique em New Group para exibir a janela de propriedades:



Veja como preencher esta caixa de diálogo:


GroupName: Representa o nome da pasta - vamos mudar para Arquivos de Ajuda.


Destination Directory: Representa o diretório onde os arquivos que estão na pasta serão instalados. (Neste caso serão os arquivos de ajuda). Podemos observar que nesta opção também é possível utilizar as tags de instalação. Neste caso, iremos utilizar a tag "" + "\Ajuda". Com isso, nossos arquivos de ajuda serão instalados no sub-diretório Ajuda, dentro do diretório principal.


File Update Method: Aqui iremos indicar o algoritmo de atualização do grupo. O entendimento de cada item é bem simples:


Update Files with the newer versions: Os arquivos do grupo serão substituídos quando a nova instalação possuir uma versão superior


Update Files with the more recent date: Os arquivos do grupo serão substituídos quando a data dos arquivos de instalação forem mais recentes.

Always update files: Sempre atualiza os arquivos do grupo.

Never update files: Nunca atualiza os arquivos do grupo.


Como este é o nosso grupo de ajuda, a opção selecionada será Always update files.


Target Platforms for the group: Esta opção também é bastante interessante. O usuário pode definir em quais sistemas operacionais o grupo poderá ser copiado. Por exemplo, se a opção Windows NT 4.0 estiver marcada, o grupo só será copiado caso este seja o sistema operacional instalado na máquina de destino. Se a opção All estiver selecionada (default) o grupo será copiado independente da plataforma instalada.


Pronto, agora é só clicar em OK. Repare que o nome da pasta mudou para "Arquivos de Ajuda"


Com o grupo criado e configurado, podemos inserir os arquivos que farão parte deste grupo. Para isto, selecione esta pasta e clique em "Insert Files". Escolha um arquivo de ajuda (.hlp) qualquer.


Nota: Não há nenhuma restrição com relação à extensão utilizada para preencher o grupo. É uma convenção de livre escolha do usuário.


A nível de exemplo, vamos preparar o nosso grupo de Banco de Dados. Clique no botão New Group. Mude o nome da pasta para DataBase e o diretório de instalação para \ DataBase e marque a opção "Never overwrite files". Clique em Ok para fechar a janela. Em seguida, clique em "Insert Files" e adicione todos os arquivos usados em seu Banco de Dados.


Neste momento, não iremos manipular as duas abas restantes "Components" e "Setup Types". O seu uso é discutido mais adiante nesta matéria.


O próximo item se chama "Dialog Boxes". Nesta etapa iremos escolher as telas que estarão presentes na instalação. Cada opção irá representar uma janela de apresentação ou de configuração diferente. Neste momento, iremos utilizar apenas as opções mais simples. As demais são explicadas mais adiante, neste mesmo artigo:


Selecione e configure as telas de acordo com a seqüência descrita abaixo:



Welcome Bitmap: A primeira tela a ser exibida pelo instalador. Para configurá-la, basta clicar na aba "Settings".


Welcome Message: Mensagem introdutória da instalação.


Software License Agreement: Termos de licença e uso do aplicativo. Clique na aba Settings para definir um arquivo texto com a mensagem a ser exibida.


Readme Information: Tela de informações ao usuário. Pode ser configurada através da aba Settings.


User Information: Tela para preenchimento das informações do usuário, como nome e empresa responsável.


Choose Destination Location: Janela no qual o usuário pode configurar o diretório de destino da aplicação. Clicando em settings é possível alterar o diretório default de destino


Setup Type e Custom Setup: Estas duas janelas permitem ao usuário selecionar o tipo de instalação adequada. Para que esta opção funcione corretamente, é necessário que a instalação deva estar preparada para isto. Mais adiante iremos nos deter neste recurso.


Select Program Folder: Permite ao usuário selecionar a pasta de programas do Windows, no qual os ícones do aplicativo serão instalados. Clicando em settings é possível alterar o nome default da pasta.


Start Copying Files: Esta janela exibe todas as configurações definidas pelo usuário.


Progress Indicator: Exibe a barra de progresso da instalação.


BillBoards: Permite exibir arquivos de imagens enquanto o processo de instalação é realizado. Para configurar as imagens que serão exibidas, basta criar arquivos BMP ou WMF de 16 cores, nomeando-os com a convenção FIGURA1.BMP, FIGURA2.BMP, FIGURAX.BMP. Na aba settings, deve-se indicar o diretório contendo as figuras.


Setup Complete: Última tela, indicando o término da instalação. Na aba Settings, é possível configurar os últimos passos da instalação:


Always show reboot computer dialog: Com esta opção marcada, a opção para boot do sistema sempre será exibida.

Run command: Permite especificar um comando a ser executado após a instalação do aplicativo.


Run command Parameteres: Permite especificar parâmetros a serem passadas para o comando executado após o término da instalação.


Reame File: Permite especificar um arquivo texto README, para ser aberto após o término da instalação.


Em seguida, clique no botão OK

O próximo item a ser configurado se chama "Make Registry Changes". Clicando no item Keys, a janela de Registro será exibida:



Esta janela, como pode ser facilmente observado, permite programar a configuração de chaves de registro na máquina do usuário. Quem já trabalhou ou acessou o registro do windows não terá maiores dificuldades ao lidar com esta caixa de diálogo, já que ela segue os mesmo padrões do aplicativo REGEDIT. Não irei entrar em muitos detalhes a respeito do Registry, visto que a sua alteração não é necessária a não ser que o próprio aplicativo ou utilitário precise. Maiores informações a respeito do registro do windows podem ser obtidas em www.regedit.com


De volta a janela principal do InstallShield, nosso próximo passo é selecionar o item Specify Folders and Icons. Clicando na opção General Settings, temos acesso às últimas configurações de nosso instalador:



Na aba General Settings, podemos configurar o atalho que apontará para o aplicativo. Na caixa Run Command, definimos o caminho do executável. Em seguida, podemos definir um parâmetro para o executável, na caixa Run Command Parameters. A caixa Description define o texto que será exibido pelo Windows como descrição do atalho (geralmente exibida na barra de status da janela). E, por último, podemos configurar como o aplicativo será aberto, na caixa Window. Outros atalhos, dentro da pasta do aplicativo, podem ser criados. Para isto, será preciso alterar algum valor das configurações do ícone selecionado, para que o botão Add Icon seja habilitado.

Na aba Advanced podemos definir as demais configurações para os atalhos criados:



Start In: Pode-se definir um diretório para que o aplicativo aponte ao ser iniciado;


Icon: Caminho de arquivo para o ícone;


Shortcut Key: Permite configurar uma combinação de teclas de atalho para o ícone. Basta pressionar as teclas e o valor será alterado;


Folder: Especifica a pasta Pai do aplicativo. É possível criar o atalho no menu Iniciar, no Desktop, e outros.


A última opção se chama "Disk Builder". Em "Disk Size", você pode definir um tamanho de disco para a geração. Clique em Build para iniciar o processo. Clique em Close para voltar à tela inicial.



A opção "Test Run" executa o instalador, a fim de testá-lo.


A opção "Copy to Floppy" fornece uma intuitiva opção para cópia dos arquivos gerados para o disquete:



Na tela Copy to Floppy no campo Drive, escolha a letra o Drive e em path o diretório. Você poderá copiar todas as imagens correspondente aos discos ou somente uma selecionada. Para copiar todas clique em "Copy All Disk Images"


Repare que os arquivos também podem ser copiados manualmente. Abaixo do diretório escolhido para criação do instalador o Installshield cria os respectivos diretórios representando os discos:



Não esqueça de salvar seu projeto no Install Shield para uma futura manutenção.


Dica: Para não gerar uma inconsistência no caminho da ajuda ou de um banco sem Alias, chame-os pela sua aplicação Delphi usando ".\nome_do _arquivo". Por exemplo, para chamar o arquivo ajuda chamado "Cep.hlp" no sub-diretório "Ajuda" do diretório da aplicação, ficaria assim: ".\Ajuda\Cep.hlp". O ponto e contra barra representam o diretório do executável.



CRIANDO UMA INSTALAÇÃO

PERSONALIZADA


O InstallShield fornece ainda o recurso de tipos de instalação, que permite ao usuário escolher diferentes formas de instalar o aplicativo, como por exemplo, completa, típica, ou personalizada:



Este recurso pode ser facilmente implementado no InstallShield. Devemos seguir a seqüência:


1) Criar grupos de arquivos, como database, help, arquivos de sistema e outros;


2) Criar componentes de instalação: Este componentes serão a interface de seleção para o usuário. Os componentes de instalação do Adobe Premiere por exemplo, podem ser visualizados na figura ao lado:



Portanto, neste exemplo poderíamos criar grupos como : Arquivos de Programa, Arquivos de Ajuda, Banco de Dados do Sistema, BDE.


Ao criar um componente de instalação , devemos indicar quais grupos de arquivos este irá conter. O componente Documentação, por exemplo, poderia conter dois grupos de arquivo, chamados Arquivos de Ajuda e Manuais do Sistema.


3) Por último, devemos configurar os tipos de instalação. Neste momento, devemos indicar quais componente farão parte de cada tipo de instalação. Os tipos pré-definidos pelo InstallShield são: Typical, Compact e Custom.


Vamos criar um exemplo passo a passo para um melhor entendimento:


É importante uma boa definição dos grupos de arquivos para que o restante da operação seja bem-sucedida. Por exemplo, imaginemos os grupos de arquivos:


Arquivos de Dados

Arquivos de Ajuda

Manuais do Sistema

Arquivos do Programa

Arquivos de Figura

Cliparts

DLLs do sistema

BDE/IDAPI


O primeiro passo é habilitar a criação de uma instalação personalizada. Para isto, clique no item Dialog Boxes, e na janela subsequente, selecione os items Setup Type e Custom Setup:



Isto irá permitir a criação de componentes de instalação e tipos de instalação.


Em seguida, clique no item Groups and Files, para abrir a caixa de dialogo Specify Component and Files:



Em seguida, clique na aba Components. A janela em questão será parecida com a figura abaixo:



Repare que um componente de instalação já é criado por default - Application Files. Este componente já inclui todos os grupos de arquivos. Vamos criar novos componentes:


Clique no botão Add Component. Na caixa de diálogo que será exibida, digite o nome do componente e sua descrição, conforme mostra a figura:



Clique no botão OK para que o novo componente de instalação seja exibido na lista de componentes. Repare que o nome do componente é o mesmo nome que será exibido para o usuário, no momento que escolher a instalação personalizada.



O segundo passo é indicar quais grupos de arquivos farão parte de nosso componente. No caso, serão os grupos Arquivos de Ajuda e Manuais do Sistema. Basta selecionar o grupo de arquivo na lista da direita e clicar no botão Add to Application component. Faça isto para os dois grupos de arquivos e a janela será parecida com a figura abaixo:



Repita este procedimento e crie os seguintes componentes:


Arquivos de Imagens

Clipart

Arquivos de Figura


Arquivos do Programa

Arquivos de Programa

BDE/IDAPI Files

BDE/IDAPI CNF File

DLLs do Sistema


Banco de Dados

Arquivos de Dados


O último passo é configurar os tipos de instalação. Clique na aba Setup Types, para exibir a caixa de diálogo abaixo:



Três tipos de instalação são previamente definidos: Custom, Typical e Compact. Novos tipos de instalação não podem ser definidos, nesta versão do InstallShield. O tipo Custom será configurado pelo usuário, no momento da instalação - este tipo representa a instalação personalizada. Portanto, devemos nos preocupar apenas com os tipos Typical e Compact.. Para associar um componente a um tipo, selecione o componente e clique no botão Add to Setup Type. Para deletar um componente de instalação, basta selecioná-lo e pressionar a tecla DEL Neste exemplo, os tipos de instalação podem ser configurados conforme a lista abaixo:

Custom

Arquivo do Programa

Documentação do Sistema

Arquivos de Imagens

Banco de Dados


Typical

Arquivos do Programa

Documentação do Sistema

Arquivos de Imagens

Banco de Dados


Compact

Arquivos do Programa

Banco de Dados


Após as configurações, a tela será parecida com a figura abaixo:



E Ok! O usuário agora poderá escolher diferentes tipos de instalação do aplicativo. Confira o resultado.


Ao ser executado, o aplicativo de instalação irá fornecer os tipos de instalação abaixo:



Selecionando a opção custom, a tela de seleção de componentes de instalação será exibida:



Este pequeno tutorial tem o objetivo de ilustrar a funcionalidade comum do IntallShield Express. Como já foi dito, as outras versões do InstallShield fornecem muito mais recursos. Uma boa pedida é uma visita ao site www.installshield.com. Para maiores detalhes técnicos da ferramenta, visite o site http://support. installshield.com/kb que é o Knowledge Base da ferramenta. Lá pode se baixado inclusive um ótimo manual da ferramenta, que foi muito apreciado por nossa equipe para o desenvolvimento deste artigo. E o exemplo aqui criado está disponível para download no endereço www.clubedelphi.com.br/exemplos/index.html. Clique na seção installshield, e baixe o arquivo edicao10.zip.


Um abraço e até a próxima !