Fazer executavel se auto-copiar

24/03/2004

0

FALA MOÇADA !!!

Preciso de algo, naum sei se é possivel do jeito que eu quero...


Rodo meu programa em rede, e toda vez q um usuario pede uma atualizacao pra mim, todos os usuarios tem que encerrar o programa para eu poder jogar o executavel no diretorio compartilhado.


Resolvi meu problema, cada usuario tem seu executavel na maquina(rodando local). Fiz isso com um processo num arquivo .bat q sempre copia o executavel do servidor para o micro local, sendo assim naum é necessario todos os micros encerrarem o programa para a atualizacao, e sim, somente quem pediu a atualizacao.


Meu problema é o seguinte...

Eu gostaria de fazer issso num so executavel(sem o arquivo .bat), q seria no meu proprio programa(eu acho, em termos de arquivo, que isso é impossivel, mas naum custa tentar... hehehe).

Quando o usuario executar o meu programa ele se auto copia para o micro local e roda somente o executavel local....


Naum sei se fui claro...


Eu acho q viajei querendo fazer um negocio desse.... rssss


Falow !!!

T +


Marfred

Marfred

Responder

Posts

24/03/2004

Paulo_amorim

Olá

Desculpe se estou errado, mas na minha terra esse eh o princípio dos Vírus...


Responder

24/03/2004

Michael

Olá amigo!

Eu particularmente não acho que você queira fazer um vírus, não é? :-)

Eu passei pelo mesmo problema que você anos atrás, pois sempre que precisava atualizar o programa, o Delphi não podia gerar o arquivo executável porque ele estava sendo utilizado por outras máquinas. Em suma, não era ´culpa´ do Delphi, mas sim da arquitetura do Windows, que bloqueia os arquivos enquanto eles estão abertos. Isso vale para qualquer arquivo, não apenas programas.

Bom, quando eu programava em Delphi 5 eu usava um componente que achei na Internet que, quando o aplicativo era executado, ele copiava o executável para a pasta temporária do computador executante, fechava o software original e executava a cópia que ele tinha acabado de fazer. Mas quando migrei para Delphi 6, não consegui utilizá-lo porque ele não tinha o código fonte aberto, apenas compilado (DCU). Então eu fiz um componente idêntico, em D6, que utilizo hoje em meus sistemas que rodam em rede. Com ele, eu sempre posso atualizar o programa, e basta aos usuários reiniciarem para q as atualizações tenham efeito. Eu fico livre para programar.

Se você estiver interessado, poste aqui uma mensagem que terei prazer em ajudá-lo!

Abraços,

Michael Benford :-)


Responder

24/03/2004

Marfred

Olá amigo! Eu particularmente não acho que você queira fazer um vírus, não é? :-) Eu passei pelo mesmo problema que você anos atrás, pois sempre que precisava atualizar o programa, o Delphi não podia gerar o arquivo executável porque ele estava sendo utilizado por outras máquinas. Em suma, não era ´culpa´ do Delphi, mas sim da arquitetura do Windows, que bloqueia os arquivos enquanto eles estão abertos. Isso vale para qualquer arquivo, não apenas programas. Bom, quando eu programava em Delphi 5 eu usava um componente que achei na Internet que, quando o aplicativo era executado, ele copiava o executável para a pasta temporária do computador executante, fechava o software original e executava a cópia que ele tinha acabado de fazer. Mas quando migrei para Delphi 6, não consegui utilizá-lo porque ele não tinha o código fonte aberto, apenas compilado (DCU). Então eu fiz um componente idêntico, em D6, que utilizo hoje em meus sistemas que rodam em rede. Com ele, eu sempre posso atualizar o programa, e basta aos usuários reiniciarem para q as atualizações tenham efeito. Eu fico livre para programar. Se você estiver interessado, poste aqui uma mensagem que terei prazer em ajudá-lo! Abraços, Michael Benford :-)


Fala meu gênio !!! De um kra assim que a comunidade sempre precisa...


Kra, se puder me ajudar loko !! eu estou com esse mesmo problema que vc tinha...

se puder me ajudar kra... valew mesmo !!!!

marfred2004@uol.com.br


Responder

24/03/2004

Geno

Olá amigo! Eu particularmente não acho que você queira fazer um vírus, não é? :-) Eu passei pelo mesmo problema que você anos atrás, pois sempre que precisava atualizar o programa, o Delphi não podia gerar o arquivo executável porque ele estava sendo utilizado por outras máquinas. Em suma, não era ´culpa´ do Delphi, mas sim da arquitetura do Windows, que bloqueia os arquivos enquanto eles estão abertos. Isso vale para qualquer arquivo, não apenas programas. Bom, quando eu programava em Delphi 5 eu usava um componente que achei na Internet que, quando o aplicativo era executado, ele copiava o executável para a pasta temporária do computador executante, fechava o software original e executava a cópia que ele tinha acabado de fazer. Mas quando migrei para Delphi 6, não consegui utilizá-lo porque ele não tinha o código fonte aberto, apenas compilado (DCU). Então eu fiz um componente idêntico, em D6, que utilizo hoje em meus sistemas que rodam em rede. Com ele, eu sempre posso atualizar o programa, e basta aos usuários reiniciarem para q as atualizações tenham efeito. Eu fico livre para programar. Se você estiver interessado, poste aqui uma mensagem que terei prazer em ajudá-lo! Abraços, Michael Benford :-)



Eh tipo...Aki eh mais ou memos parecido.

NA atualizacao de versao, o sistema baixa do servidor um ZIP com dois aplicativos. Um eh o exe da nova versao, o outro chamamos de ReplaceFIle.
Uma vez baixados, o sistema descompacta o zip em outro diretorio temporario e executa o ReplaceFile, que por sua vez finaliza o sistema, deleta o executavel velho, move o executavel novo da pasta temporaria para a pasta correta e executa o novo executavel.

O novo executavel ao entrar, checa se existe a pasta temporaria, se existir ele apaga e pow. Fica tudo novo...


Responder

24/03/2004

Spooner

Olá amigo! Eu particularmente não acho que você queira fazer um vírus, não é? Eu passei pelo mesmo problema que você anos atrás, pois sempre que precisava atualizar o programa, o Delphi não podia gerar o arquivo executável porque ele estava sendo utilizado por outras máquinas. Em suma, não era ´culpa´ do Delphi, mas sim da arquitetura do Windows, que bloqueia os arquivos enquanto eles estão abertos. Isso vale para qualquer arquivo, não apenas programas. Bom, quando eu programava em Delphi 5 eu usava um componente que achei na Internet que, quando o aplicativo era executado, ele copiava o executável para a pasta temporária do computador executante, fechava o software original e executava a cópia que ele tinha acabado de fazer. Mas quando migrei para Delphi 6, não consegui utilizá-lo porque ele não tinha o código fonte aberto, apenas compilado (DCU). Então eu fiz um componente idêntico, em D6, que utilizo hoje em meus sistemas que rodam em rede. Com ele, eu sempre posso atualizar o programa, e basta aos usuários reiniciarem para q as atualizações tenham efeito. Eu fico livre para programar. Se você estiver interessado, poste aqui uma mensagem que terei prazer em ajudá-lo! Abraços, Michael Benford


Sera que poderia me Enviar Tambem.

E-mail: jeronimodedeus@terra.com.br

Desde Já Obrigado


Responder

24/03/2004

Zacca

gostaria de uma copia desse componente

zacca@click21.com.br

agradeço desde ja...


Responder

25/03/2004

Aroldo Zanela

Colega,

Ainda acho que uma parada programada numa LAN seja mais eficiente que gerar um tráfego desnecessário entre o servidor e todas as estações de trabalho. Imagine numa rede de +- 1000 máquinas com executáveis de 10 MB, mesmo aplicações n-tier, basta um único executável compartilhado na rede.

No entanto, uma solução simples para seu problema seria utilizar um módulo de carga (também centralizado) que poderia verificar a data e hora do executável da rede e se diferente (mais recente) poderia efetuar a cópia para a estação e em seguida carregá-lo (Processo, WinExec, etc).


Responder

25/03/2004

Adilsond

[b:adbaffc5d6]Atualizador de Aplicações[/b:adbaffc5d6]

[img:adbaffc5d6]http://www.clubedelphi.com.br/aplicativos/img_atu_app.gif[/img:adbaffc5d6]

[url]http://www.clubedelphi.com.br/aplicativos/atu_app.htm[/url]


Responder

25/03/2004

Aroldo Zanela

[b:4e1de7a68b]Atualizador de Aplicações[/b:4e1de7a68b] [img:4e1de7a68b]http://www.clubedelphi.com.br/aplicativos/img_atu_app.gif[/img:4e1de7a68b] [url]http://www.clubedelphi.com.br/aplicativos/atu_app.htm[/url]


Boa AdilsonD!!!!!


Responder

19/02/2019

Ediclo Junior

Olá amigo!

Eu particularmente não acho que você queira fazer um vírus, não é? :-)

Eu passei pelo mesmo problema que você anos atrás, pois sempre que precisava atualizar o programa, o Delphi não podia gerar o arquivo executável porque ele estava sendo utilizado por outras máquinas. Em suma, não era ´culpa´ do Delphi, mas sim da arquitetura do Windows, que bloqueia os arquivos enquanto eles estão abertos. Isso vale para qualquer arquivo, não apenas programas.

Bom, quando eu programava em Delphi 5 eu usava um componente que achei na Internet que, quando o aplicativo era executado, ele copiava o executável para a pasta temporária do computador executante, fechava o software original e executava a cópia que ele tinha acabado de fazer. Mas quando migrei para Delphi 6, não consegui utilizá-lo porque ele não tinha o código fonte aberto, apenas compilado (DCU). Então eu fiz um componente idêntico, em D6, que utilizo hoje em meus sistemas que rodam em rede. Com ele, eu sempre posso atualizar o programa, e basta aos usuários reiniciarem para q as atualizações tenham efeito. Eu fico livre para programar.

Se você estiver interessado, poste aqui uma mensagem que terei prazer em ajudá-lo!

Abraços,

Michael Benford :-)






gostaria de uma copia desse componente

ediclo.jr@gmail.com

agradeço desde ja..
Responder

20/02/2019

Hélio Devmedia

Queridos, sem utilizar componente eu resolvo assim,


Ao iniciar meu aplicativo eu faço um MD5 Hash do próprio executável e um do que está na rede e comparo os valores. Se for o mesmo hash, então não tem atualização, mas se for diferente é porque tem nova atualização, assim, eu simplesmente troco o nome do próprio executável aberto usando TFile.Move('Project11.exe', 'ProjectXXXXX.exe'); (o windows permite renomear um executável em uso), puxo o da rede (que está com o nome correto) jogo uma mensagem para o cliente dizendo que o programa atualizou e será fechado e peço para abrir novamente...

Espero ter ajudado
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar