ShowWait(,,"VERSÃO DESATUALIZADA, atualizando o sistema...")
FErase(wD_IniEXE+"PROGRAMA.OLD") //exclui o antigo
FRename(wD_IniEXE+"PROGRAMA.EXE",wD_IniEXE+"PROGRAMA.OLD") //renomea o programa atual
CopyFile(wD_Instal+"PROGRAMA.EXE",wD_IniEXE+"PROGRAMA.EXE" ) //copia do servidor o novo
ShowMessage(,,"ATUALIZADO COM SUCESSO, FAVOR ACESSAR O SISTEMA NOVAMENTE...",4)
e sai do sistema, fecha.
aí nesta parte eu quero que o sistema ja fechado execute novamente e entre ja com a versão nova., tem como fazer isto?
Boa tarde a todos.
Consegui, deu certo, eu havia tentando com RUN() mas este nao da certo aí fiz com hb_Openprocess(wD_IniEXE+"PROGRAMAEXE") e deu certo.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web
lDatePRG:=FileDate(wD_IniEXE+"MEUPROGRAMA.EXE") //pego a data do programa.
lTimePRG:=FileTime(wD_IniEXE+"MEUPROGRAMA.EXE") //pego a data do programa.
lSizePRG:=FileSize(wD_IniEXE+"MEUPROGRAMA.EXE") //pego o tamanho do arquivo
//dados do sistema no servidor
sDatePRG:=FileDate(wD_Instal+"MEUPROGRAMA.EXE") //pego a data do programa.
sTimePRG:=FileTime(wD_Instal+"MEUPROGRAMA.EXE") //pego a data do programa.
sSizePRG:=FileSize(wD_Instal+"MEUPROGRAMA.EXE") //pego o tamanho do arquivo
If wE_Modo=="PRODUCAO".And. (lDatePRG # sDatePRG .Or. lTimePRG # sTimePRG .Or. lSizePRG # sSizePRG )//o programa esta desatualizado
ShowWait(,,"VERSÃO DESATUALIZADA, atualizando o sistema...")
FErase(wD_IniEXE+"MEUPROGRAMA.OLD") //exclui o antigo
FRename(wD_IniEXE+"MEUPROGRAMA.EXE",wD_IniEXE+"MEUPROGRAMA.OLD") //renomea o programa atual
CopyFile(wD_Instal+"MEUPROGRAMA.EXE",wD_IniEXE+"MEUPROGRAMA.EXE" ) //copia do servidor onov
hb_Openprocess(wD_IniEXE+"MEUPROGRAMA.EXE") //EXECUTA O SISTEMA NOVAMENTE
EndIf
Basta apenas o código acima, o sistema novo trocado é executado.
Obrigado Leandro pelo retorno, mas tenho 2 questões
Em q momento dispara esta rotina?
E como ficam outros terminais q estejam executando o sistema, exemplo 1 lançando nota, outro vendendo etc?
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web
Bom dia.
Primeiro tive que colocar todos os sistema LOCAL, ou seja, instalados na máquina, assim cada terminal fica com sua própria execução e atualização.
Não executo mais pela REDE, notei que demora muito mais para o programa abrir e causa muito problema com WIN7 e lentidão nas telas.
Não faço atualização que tenha estruturação de banco de dados, porque isto afetaria a todos de uma só vez, estas faço fora de hora, ainda não bolei algo que ficasse pendurado, aguardando a liberação do banco de dados para que seja feita, quando tem urgência e a filial pode parar aí faço a troca, senão aguardo para fora do horario mesmo.
Não consegui ainda, caso no mesmo terminal esteja com dois programas aberto, neste caso da falha e some com o executável aí tenho que entrar e arrumar manualmente.
Esta rotina é disparada na inicialização do sistema, coloco para verificar toda vez que entro no sistema pelo próprio sistema, ele verifica na pasta do servidor se tem uma versão nova, ou seja, eu atualizo apenas no servidor, depois cada terminal verifica e se atualiza sozinho, alguns demoram mais a fazer a atualização porque esta atendendo, outros menos, pq todos tem que entrar para fazer um a um.
Com o tempo quero aprimorar mais e minha idéia é chegar no seguinte:
-Faço a atualização e coloco na internet para download.
-O servidor na filial verifica constantemente e se tiver nova versão, baixa e se atualiza e se estrutura se necessário e liberado.
-O terminal verifica no servidor e se atualiza, (já implantado e funcionando)
Nestes meio termo, necessito fazer as regras abaixo, que não existe ainda.
-O servidor só se atualiza caso a versão poder estruturar ou não o banco de dados.
-O terminal tbem só se atualiza se estiver livre o programa para fazer, ou seja, apenas um programa na mesma máquina.
-E obrigar os demais sistemas a sairem se for feita a atualização no servidor, caso ainda não se atualizaram.
Bom, detalhadamente funciona desta forma acima descrito.
Tudo de bom, qualquer dúvida, estamos aí.
:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop Celular Android/iOS Windev Mobile WEB Windev Web