Oi... bom vou tentar explicar um pouco mas não tão detalhadamente... depois
se quiser te mando alguns fontes do projeto...

 

O escopo é o seguinte...

 

Antes, o cliente executava um aplicativo, que era o nosso aplicativo
principal... hoje, o cliente executará um gerenciador, que chamará o seu
aplicativo principal...

 

Porque ?

 

Porque o meu aplicativo ficou com um tamanho que o Windows 98 não pode
gerenciar, sendo assim gerando o aplicativo sem as BPL’s meu aplicativo cai
de tamanho... pouca coisa... mas como medida paleativa funciona. O problema
é que dependendo... são dezenas de BPL’s que o cliente tem que ter na
máquina dele, então o que fazer ?? Criar um gerenciador que carregue do
banco esses arquivos, pra ninguém ter que ficar andando pra lá e pra cá,
copiando e colando arquivos nas máquinas do cliente... Além disso, o sistema
agora começa a gerenciar a própria versão do seu exe principal... O que
facilita muito...

 

Esse gerenciador faz o que ?

 

Verifica o conteúdo da pasta onde está o exe, comparando com o conteúdo de
uma tabela que está no banco... Essa tabela tem a seguinte estrutura:

 

DESCRICAO VARCHAR(30);

VERSAOMAIOR INTEGER;

VERSAOMENOR INTEGER;

VERSAORELEASE INTEGER;

VERSAOBUILD INTEGER;

ARQUIVO BLOB;

 

O gerenciador, quando executado, carrega as informações da tabela e
verifica, pra cada arquivo se:

1 – Se a versão do arquivo na pasta, for maior que a sua, carrega o arquivo
pro banco...

2 – Se a versão do arquivo é igual, nada faz

3 – Se a versão do arquivo é menor, faz uma cópia do arquivo pra uma pasta
de Backup, renomeando-o para bkp_nomedoarquivo_DiaHora.bkp, em seguida salva
na pasta do exe, o arquivo que está no banco, que tem a versão maior...

4 – No final, executa o aplicativo principal... Mas como ele sabe qual é ?
Tenho o nome dele no .ini da aplicação... aí é só chamar esse conteúdo
usando a ShellApi, e em seguida se autofinalizar...

 

O resultado é um splash, a tela do gerenciador... com mensagens tipo,
“Atualizando arquivos...”, em seguida abre o sistema direto na tela de
login, ninguém percebe o que houve...

 

Detalhe... como saber se o aplicativo não será iniciado antes do gerenciador
?

 

No DPR do aplicativo, verifico se o ParamStr(0) é “-run”, se não for, chamo
o gerenciador e dou um Halt na aplicação, se for, sigo adiante...

 

No gerenciador, na hora de chamar o aplicativo, passo o parametro “-run”...
Assim crio um flag. Mesmo o cliente executando o aplicativo principal, ele
se fechará e chamará o gerenciador...

 

OK ?!

 

Mais dúvidas me pergunte...

 

Rodrigo...

 

  _____  

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Adauri Antonio Camacho Junior
Enviada em: quinta-feira, 15 de fevereiro de 2007 10:09
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br] Estouro de Memoria (URGENTE)

 

Rodrigo, bom dia. 

Você poderia explicar melhor este negocio de guardar as bpls em banco ?

Obrigado

Jr.

----- Original Message ----- 
From: Rodrigo Madureira Barbosa 
To: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br 
Sent: Thursday, February 15, 2007 9:08 AM
Subject: RES: [delphi-br] Estouro de Memoria (URGENTE)

Isso é um problema grave do 98, ele não gerencia exe's a partir de um
tamanho específico... Tivemos esse problema e de início criei um aplicativo
que gerenciava versões de arquivos que eram guardados no Banco de dados, e
começamos a gerar o exe sem as bpl's pra reduzir um pouco seu tamanho e
voltar a rodar nos clientes... Salvamos exe e Bpl's no banco, e sempre que o
aplicativo gerenciador era executado, ele carregava do banco as bpl's e exe
para a pasta, e executava o aplicativo principal... pra termos um
controle....

Em seguida, o software foi modularizado... Só assim resolveu...

Rodrigo

_____ 

De: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
[mailto:[EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br] Em
nome de Marcio
Enviada em: quinta-feira, 15 de fevereiro de 2007 08:36
Para: Grupo Delphi; Grupo Delphi
Assunto: [delphi-br] Estouro de Memoria (URGENTE)

Galera, pq quando meu executavel chega a mais de 14mb ele nao abre no
windows 98? Da uma mensagem dizendo que nao há memoria livre para executar
o programa. O que eu faço pra resolver o problema..

Márcio Cristiano Tenreiro
Programador Pleno
Universidade de Marília/SP
(14) 2105-4129

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

[As partes desta mensagem que não continham texto foram removidas]

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a