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 BPLs meu aplicativo cai de tamanho... pouca coisa... mas como medida paleativa funciona. O problema é que dependendo... são dezenas de BPLs 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]