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
Screen Shot 04-01-16 at 03.41 PM.PNG

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