Não. O EXE intermediário será fixo, senão vai continuar com o mesmo problema pra atualizar.
Opção 1: um BAT
Nesse bat chama loja1.exe, loja2.exe, loja3.exe
Cada vez que atualizar, o EXE altera o nome dentro do BAT, e grava o EXE com o nome novo.
Na minha máquina esta assim:
Código: Selecionar todos
@ECHO OFF
CLS
START D:\CDROM\FONTES\INTEGRA\JPA.EXE %1 %2 %3 %4 %5
REM EXIT
Esse nome JPA.EXE pode ser alterado pra JPA2.EXE, JPA3.EXE, JPA4.EXE.
Trata-se de alterar o BAT, e salvar o EXE com o respectivo nome.
Opção 2: um EXE intermediário
Neste caso o EXE executa o mais novo, e o atalho será direto pra este EXE.
Criei este EXE, que nunca vai se alterar, como intermediário.
Código: Selecionar todos
/*
sjpa - intermediário pra carga do EXE final
*/
REQUEST HB_Codepage_PTISO
#include "directry.ch"
#include "hbwin.ch"
PROCEDURE Main( cmdParam1, CmdParam2, cmdParam3, cmdParam4, cmdParam5 )
LOCAL oExeList, cPath
Set( _SET_CODEPAGE, "PTISO" )
SET DATE BRITISH
SET EPOCH TO Year( Date() ) - 90
cPath := hb_Argv(0)
cPath := Left( cPath, Rat( "\", cPath ) )
cmdParam1 := iif( cmdParam1 == NIL, "", cmdParam1 )
cmdParam2 := iif( cmdParam2 == NIL, "", cmdParam2 )
cmdParam3 := iif( cmdParam3 == NIL, "", cmdParam3 )
cmdParam4 := iif( cmdParam4 == NIL, "", cmdParam4 )
cmdParam5 := iif( cmdParam5 == NIL, "", cmdParam5 )
oExeList := Directory( cPath + "JPA*.EXE" )
IF Len( oExeList ) == 0
MsgExclamation( "Não encontrado EXE na pasta " + cPath )
RETURN
ENDIF
ASort( oExeList, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
// MsgExclamation( "Executando " + oExeList[ 1, F_NAME ] )
WAPI_ShellExecute( NIL, "open", cPath + oExeList[ 1, F_NAME ], cmdParam1 + " " + cmdParam2 + " " + cmdParam3 + " " + cmdParam4 + " " + cmdParam5, hb_cwd(), SW_SHOWNORMAL )
RETURN
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atenção", WIN_MB_ICONASTERISK )
RETURN NIL
Explicação:
O EXE intermediário vai testar e executar o EXE mais novo da pasta.
Só precisa decidir qual será o prefixo do EXE em questão.
No meu caso uso JPAxxxx.EXE
Se salvou um EXE novo como JPAxxxx.exe, ele vai passar a ser o novo EXE chamado, automaticamente.