Coisa simples, cada vez que baixa, é outro nome de EXE: JPA2.EXE, JPA3.EXE, JPA4.EXE, etc.
E na pasta tem um SJPA.EXE que executa o JPA*.EXE mais novo.
Até aÃ... tudo bem.
Mas tem usuário que consegue trocar o atalho, e criar direto para o EXE.
Resultado: fica EXE novo e velho ativos, às vezes até com mudanças de estrutura de DBF, e outras coisas mais.
Até perda de informações já causou.
Como impedir isso?
Simples... embuti o SJPA.EXE dentro do próprio JPA.EXE.
cPath := hb_FNameDir( hb_ProgName() )
oExeList := Directory( cPath + "JPA*.EXE" )
ASort( oExeList, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
IF Upper( oExeList[ 1, F_NAME ] ) != Upper( hb_FNameNameExt( hb_ProgName() ) )
MsgExclamation( "JPA executado nao eh o EXE mais recente." + hb_Eol() + ;
"Trocando para o EXE mais recente" + hb_Eol() + ;
"Corrija o atalho alterando pra SJPA.EXE" )
WAPI_ShellExecute( NIL, "open", cPath + oExeList[ 1, F_NAME ], cParam, hb_cwd(), SW_SHOWNORMAL )
QUIT
ENDIF
Se o atalho estiver errado, executo o correto.... rs
Isso vai impedir de executar o velho, e impedir problemas....