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:
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 |
|
|
|
|