Install personalizado
Crie seu próprio sistema de instalação de jogos

Inegavelmente, os ambientes gráficos trouxeram uma série de benefícios aos usuários de microcomputadores. Quanto aos programadores... bem, a estória é um pouco diferente.

Geralmente nossos programas for Windows já começam com algumas centenas de kilobytes de tamanho. Bastam umas poucas imagens, uns ícones mais elaborados ou mesmo umas telas full screen para a coisa extrapolar o megabyte. O resultado final passa a não caber num único disquete, ou, se usarmos mais de um disquete, o programa precisa ser segmentado, dividido, arjeado, pkzipado, arcqueado, etc. Baixar pela internet então, nem pensar.

A saída para amenizar esse problema é criar um programa install, ou setup como preferirem. Esse programa se encarrega de descompactar os arquivos e copiá-los para o diretório destino, definidos pelo usuário. Tudo muito simples. A questão é: usar um programa comercial, ou mesmo shareware, que faça isso ou arregaçar as mangas e fazer o nosso próprio install, via Delphi por exemplo?

Na internet pode-se encontrar, dentre várias bugigangas, diversos programas shareware que pretendem fazer esse tipo de serviço. Não são nenhuma maravilha e além do mais, do que é que estamos reclamando - eles são grátis, de lambuja, for free.

Podemos usar programas como o InstallShield Professional, versão full, mas ele também adianta de pouca cousa. A instalação fica elegantíssima, "a nível de" Maicrou$oft e Adobe, só que com o texto todo em inglês. Moral da história: parece haver uma lacuna no mercado (como dizem) de bons instaladores nos dialetos senegalês gwandi e português.

Mas como fazer?

Decididos a pegar o touro pela unha, a primeira providência é partir para o help do Delphi onde, com a ajuda de um help do help, podemos facilmente concluir que nesse aspecto, estamos como náufragos em uma ilha deserta. Nada vezes nada.

Mas, recorrendo à API do Windows, as coisas começaram a aparecer. Depois de muito pesquisar, e com um pouco de sorte, consegui descobrir o seguinte: copiar arquivos de um lugar para o outro. Quando o digníssimo leitor parar de rir, já que em DOS isso seria feito com um simples copy, explico com detalhes.

A API do Windows possui umas funções de cópia descompactando. É isso mesmo, é um copy e descompact ao mesmo tempo. Com isso é facílimo construir o install. O problema, pelo menos até aqui, é compactar nossos arquivos de acordo com o padrão adotado pela Microsoft. A documentação da API fala no Software Development Kit, mas os sanatórios então cheios de programadores que tentaram entender esse tal de SDK.

Essas funções estão num módulo chamado LZExpand (Lempel-Ziv Encoding functions) cujo padrão de compressão é adotado por nove entre dez compactadores do mercado. Mas não se anime, pois de nada adianta usar o PKZIP, ARJ, ARC, etc para compactar. 

Seja como for, o caminho é esse mesmo. Primeiro temos que LZcompactar nossos arquivos para depois LZcopiar e LZdescompactar. Tudo muito simples. A seguir apresento as procedures e procemoles que uso para fazer algo parecido com o install.

Em primeiro lugar, o programador deve acrescentar na seção uses do seu programa (lembrando que estamos no Delphi) o módulo LZExpand:

uses
  ...,LZExpand;

Na seção implementation, criar a function:

function CopyArq(File1,File2: string): boolean;
var
   Dd1,Dd2: Tofstruct;
   Arq1,Arq2: integer;
   Noarq1,Noarq2: array[0..79] of char;
begin
   StrPCopy(Noarq1,File1 + chr(0));
   StrPCopy(Noarq2,File2 + chr(0));
   Arq1:= LZOpenFile(Noarq1,Dd1,of_ReadWrite);
   Arq2:= LZOpenFile(Noarq2,Dd2,of_Create);
   LZCopy(Arq1,Arq2);
   LZClose(Arq1); LZClose(Arq2);
end;

Finalmente, numa procedure, fazer a chamada:

   CopyArq('arqfonte.tx_','arqdesti.txt');

Podendo variar ao gosto do freguês os nomes, extensões, etc. Segundo a documentação da API, se arqfonte.tx_ estiver LZcompactado, será automaticamente LZdescompactado durante a cópia. Mais informações sobre a biblioteca LZExpand podem ser obtidas no próprio help do Delphi.

Fica faltando o LZCompressor. Vasculhando uns disquetes antigos, encontrei lá pelo DOS 3 um programa chamado COMPRESS que se propõe a fazer o que mais desejamos nesse momento: comprimir um arquivo no padrão LZ que a API entenda.

Bingo! Na mosca. Tá certo que o programa COMPRESS não é lá essas coisas e nem mesmo consegue taxas fantásticas de compressão, mas é melhor que nada. Com esse programa e a função de cópia de arquivos, podemos construir um install prá lá de personalizado. Clique no link abaixo e baixe uma cópia desse programa.


Download...
Clique no link para fazer o download dos arquivos. Se sua assinatura do club TILT está para vencer, clique aqui e saiba como renová-la.

Fontes completos do exemplo da matéria
 
online