EXECUTAVEL

USUARIO.EXCLUIDOS 12/01/2005 11:53:17
#60229
Ola pessoal, entao meu problema é o seguinte, eu tenho uns 30 computadores em rede e eles usam o programa q eu fiz, entao cada vez q eu atualizo eu tenho q fazer outro executavel e por no servidor, só q ele nao me deixa fazer isso a nao ser q todos estejam com o programa fechado.
Tem algum jeito de burlar isso???, pq é um saco fica esperando todo mundo fechar pra eu poder substituir
agradeço a atençao!
THIAGO.CESAR 12/01/2005 12:05:22
#60234
é o seguinte,
Por um lado, você deve reconhecer que não é um bom negócio substituir um arquivo que está sendo executado no momento...

Por outro lado, se não me engano, o comando Kill(Arquivo) deleta o arquivo ainda que esteja aberto. Portanto, se eu não estiver equivocado, você pode fazer o que pretende...
THIAGO.CESAR 12/01/2005 12:10:31
#60237
Acabei de testar aqui.

Para documentos de texto, coisinhas pequenas, etc, ele realmente deleta o arquivo sem misericórdia...[S28]
Mas infelizmente (ou felizmente) ele não faz o mesmo com aplicativos...[S62]
USUARIO.EXCLUIDOS 12/01/2005 12:13:45
#60238
Eu tive este mesmo problema em uma empresa e lá eu costumava usar o commando Kill e quando este falhava eu manda uma mensagem para o grupo atravez de winpop(up) pedindo aos usuários que fechem o sistema...

Zani
USUARIO.EXCLUIDOS 12/01/2005 12:14:12
#60239
executo esse comando kill aonde?
no windows??
USUARIO.EXCLUIDOS 12/01/2005 14:59:59
#60281
VB

Kill nomedoarquivo



Zani.
USUARIO.EXCLUIDOS 12/01/2005 15:34:21
#60294
nao tem outro jeito nao??
pelo windows mesmo, tipo desabilita alguma opçao pra doer fazer issoo???
USUARIO.EXCLUIDOS 12/01/2005 17:08:32
#60335
Bem eu não arriscaria dar um Kill , pois pode ser exatamente na hora de uma transação com o banco o que pode danificar.
Tenho também esse problema, e fiz um outro programa que seria de manutenção onde faz a compactação do banco Access ( o que não pode ter ninguém conectado) e tem uma opção para atualização do exe.

Esse programa é usado pelo pessoal do CPD de madrugada onde não tem ninguém usando o sistema. O Programa lista as tarefas a serem realizadas e o operador bastar acionar e pronto. No caso do EXE tem uma pasta propria onde coloco o arquivo novo, o programa verifica se tem na pasta a existencia do arquivo se tiver entra na lista de tarefas.

Bem tem um outro modo que seria a propria aplicacão verificar a existencia desse arquivo. Mas é um pouco mais complexa. Quando o usuário desse o login no sistema o programa checa se existe atualização. Então o programa A ( usado) aciona um outro programa ( que seria o de atualização), apos acionar o programa de atualização o programa A é encerrado. (END)
Então o programa de atualização faz a troca dos arquivos. Mas essa solução é para quando o EXE esta na máquina do cliente.

Agora quando tenho que resolver pipinos no banco Access e preciso na hora tirar a galera do ar, eu faço uma copia do banco ( por segurança) e simplesmente retiro o compartilhamento da rede. Pronto todo mundo cai na hora.Faço o que tenho que fazer e depois retorno o compartilhamento. Isso é força bruta, mas paciência.
FGSANTOS 12/01/2005 17:28:17
#60345
Resposta escolhida
Eu tenho uma sugestão:

Crie uma função em seu programa que verifica se existe um arquivo de atualização (tipo, uma pasta no servidor chamada Atualiza).

Voce coloca nesta função:

if dir("endereçodoservidor\atualiza\seuprograma.exe") <> "" then
msgbox "O Sistema será fechado para atualização.", vbCritical, "Atualização do Sistema"
end
endif


Coloca a chamada desta função na abertura de cada form, assim, é só colocar o arquivo no Atualiza, que ao fechar um form e abrir outro o usuário recebe esta mensagem e fecha o programa. Coloque também no Load do programa, assim o cara não tenta abrir de novo.

Feito isto, em um momento todos os usuários serão obrigados a fechar o programa. Crie um Supervisor.exe, que executa apenas o seguinte:
Verifica se na pasta atualiza tem arquivo, se tiver tenta apagar do raiz (do seu sistema) e copiar o novo arquivo, e apagar o arquivo do atualiza. Caso não consiga apagar porque tá em uso coloque um On error resume next.
Eu fiz assim em um projeto e funciona muito bem. Não precisa pedir ninguém para ficar avisando para fechar o sistema, e quando está atualizado, é só o cara executar.

Parece complicado, mas pense bem, é muito simples.
Tópico encerrado , respostas não são mais permitidas