Página 1 de 1
Eliminar BAT de carga do aplicativo
Enviado: 01 Abr 2016 15:14
por JoséQuintas
Descobri agora que no W8 o atalho para arquivo BAT não é permitido.
Uso o BAT por causa da atualização automática, que vai trocando o nome do EXE, por isso o atalho não é direto ao EXE.
Minha primeira idéia é um EXE intermediário, que vai carregar o EXE mais novo da pasta.
Lógico, a pesquisa é limitada ao nome do aplicativo "JPA*.EXE", pra evitar problemas.
Minha dúvida:
Aquele raio do modo offline do Windows, que pode não atualizar o diretório na pesquisa.
Alguma observação sobre isso?
Nota:
O EXE sempre trabalha com a pasta atual
O BAT acaba sendo um adicional pra posicionar pasta.
A princípio, a única coisa que poderia dar errado seria o modo offline do Windows, onde a estação pode não ficar sabendo de arquivos novos na pasta.
Eliminar BAT de carga do aplicativo
Enviado: 01 Abr 2016 15:40
por asimoes
Quintas,
Fiz um teste aqui no meu notebook windows 8.1 e consegui criar atalho para um arquivo bat e executou
Eliminar BAT de carga do aplicativo
Enviado: 02 Abr 2016 01:23
por JoséQuintas
Lá testei e não foi.
Não sei se é porque o BAT está na pasta mapeada, ou é coisa do antivírus.
Eliminar BAT de carga do aplicativo
Enviado: 04 Abr 2016 11:17
por Daniel
Ola Jose
você usa um exe por maquina ou mapeia o exe no servidor?
eu uso um exe por maquina para o exe do servidor ficar livre para poder copia um exe novo,
e os exe de cada maquina checa a data do exe do servidor se for maior copia o novo exe
Eliminar BAT de carga do aplicativo
Enviado: 04 Abr 2016 21:07
por JoséQuintas
Máquina local:
- Atalho
- ODBC MySQL, se usar MySQL
- Componentes de NFE, se usar NFE e não houver outra opção
Servidor:
- EXE
- DBFs, se houver
- hbnetio rodando como serviço, se houver
- Servidor MySQL, se houver
- Componentes de NFE, se for pelo servidor
Eliminar BAT de carga do aplicativo
Enviado: 06 Abr 2016 16:57
por rochinha
Amiguinhos,
Jose Quintas
Nas propriedades deste .BAT modifique para executar como Administrador em Atalho\Avançado.
Eliminar BAT de carga do aplicativo
Enviado: 06 Abr 2016 17:19
por JoséQuintas
Ainda não coloquei em prática, mas tô gostando da idéia do EXE que mencionei.
Vai dar até a opção do usuário atualizar manualmente, bastando salvar o EXE na pasta.
Eliminar BAT de carga do aplicativo
Enviado: 07 Abr 2016 17:53
por Ricardo C. Freitas
Boa tarde José Quintas,
Aqui eu utilizo um EXE que faz o mapeamento para o servidor e carrega o EXE da aplicação.
Se desejar me manda um e-mail que envio o projeto para você.
At+
Eliminar BAT de carga do aplicativo
Enviado: 08 Abr 2016 08:25
por Daniel
]o exemplo do EXE que eu uso
hello.prg
- programa exe
- (4.89 KiB) Baixado 45 vezes
e como chamo o EXE
Código: Selecionar todos
cLocal := DiskName() +':' + DirName(DiskName()) + '\hello.exe'
cDataLocal := FileDate(cLocal)
cDataServidor := FileDate(cBase + 'hello.exe')
cHoraLocal := FileTime(cLocal)
cHoraServidor := FileTime(cBase + 'hello.exe')
cLocalServidor:= cBase + 'hello.exe'
If cDataLocal < cDataServidor
Copy File &cLocalServidor To &cLocal
InKey(2)
EndIf
cLocal := DiskName() +':' + DirName(DiskName()) + '\menu.exe'
cDataLocal := FileDate(cLocal)
cDataServidor := FileDate(cBase + 'menu.exe')
cHoraLocal := FileTime(cLocal)
cHoraServidor := FileTime(cBase + 'menu.exe')
cLocalServidor:= cBase + 'menu.exe'
nFlag := MB_OK + MB_SETFOREGROUND + MB_SYSTEMMODAL + MB_ICONINFORMATION
If cDataLocal < cDataServidor
MessageBoxTimeout('Ha uma Nova Versão do Programa no Servidor'+ chr(10)+chr(13)+;
'Atualizando Agora...', 'Aviso do Sistema', nFlag, 3000)
ShellExecute(0, "open","HELLO.EXE", cLocalServidor + ' ' + cLocal + ' ' + cCaminhoServidor)
Quit
ElseIf cDataLocal == cDataServidor
If cHoraLocal < cHoraServidor
MessageBoxTimeout('Ha uma Nova Versão do Programa no Servidor'+ chr(10)+chr(13)+;
'Atualizando Agora...', 'Aviso do Sistema', nFlag, 3000)
ShellExecute(0, "open","HELLO.EXE", cLocalServidor + ' ' + cLocal + ' ' + cCaminhoServidor)
Quit
EndIf
EndIf
Eliminar BAT de carga do aplicativo
Enviado: 10 Abr 2016 21:17
por JoséQuintas
Isso de verificar nova versão já tenho no EXE.
O EXE novo vai ser só pra carga mesmo.
Meu aplicativo se chama JPA.EXE
As versões vão se chamar JPA1.EXE, JPA2.EXE, JPA3.EXE, etc.
Se o usuário instalar manual, por download, pode ser JPA(2).EXE, JPA(3).EXE, etc.
O EXE de carga apenas verifica qual o mais novo na pasta dos EXEs (JPA*.EXE), e continua executando na mesma pasta default que foi definida.
Sempre trabalho com a pasta default, assim funciona em qualquer lugar.
Só copiar a pasta, criar o atalho e pronto.
Como o aplicativo aceita parâmetros, este programa repassa os parâmetros.
Fiz este aqui:
Código: Selecionar todos
REQUEST HB_Codepage_PTISO
#include "directry.ch"
#include "hbwin.ch"
PROCEDURE Main( cmdParam1, CmdParam2, cmdParam3, cmdParam4, cmdParam5 )
LOCAL oDirExe, oFile, oExe, 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 )
oDirExe := Directory( cPath + "JPA*.EXE" )
IF Len( oDirExe ) == 0
MsgExclamation( "Não encontrado EXE na pasta " + cPath )
RETURN
ENDIF
oExe := { oDirExe[ 1, F_NAME ], oDirExe[ 1, F_SIZE ], oDirExe[ 1, F_DATE ], oDirExe[ 1, F_TIME ] }
FOR EACH oFile IN oDirExe
IF Dtos( oFile[ F_DATE ] ) + oFile[ F_TIME ] > Dtos( oExe[ F_DATE ] ) + oExe[ F_TIME ]
oExe := { oFile[ F_NAME ], oFile[ F_SIZE ], oFile[ F_DATE ], oFile[ F_TIME ] }
ENDIF
NEXT
WAPI_ShellExecute( NIL, "open", cPath + oExe[ 1 ], 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