Página 1 de 1

Atualização de sistema pelo GoogleDrive

Enviado: 19 Nov 2013 21:51
por asimoes
Pessoal,

Estou usando mais uma opção de atualização de sistemas além do tradicional ftp.
Comecei os testes com o GoogleDrive e tá funcionando belezinha.

A primeira coisa que eu fiz foi criar uma conta no google para utilizar o serviço do googledrive que disponibiliza 15GB de graça.

Acessando o googledrive deve ser baixado o sincronizador (Connect Drive to your desktop), após a instalação informar a pasta de sincronismo de arquivos.

A pasta no inicio tem que estar vazia.

Eu criei uma pasta DRIVE e fiz as funções abaixo para testar.

Na página do googledrive https://drive.google.com subi os arquivos meus de teste abaixo:

Código: Selecionar todos

FUNCTION ChecaAtualizacaoGoogleDrive
PUBLIC nTmpLog:=60
   IF nAtualizaLog != NIL
      HB_IdleDel( nAtualizaLog )
   ENDIF
   nAtualizaLog:=HB_IdleAdd( {|| ExecutaAtualizacaoGoogleDrive() } )
RETURN .T.  

FUNCTION ExecutaAtualizacaoGoogleDrive
LOCAL hEstacaoCobranca, cEstacaoCobranca
   IF nTempoUltimaVerificacao = Nil
      nTempoUltimaVerificacao:=Seconds()
   ENDIF
   IF Seconds() - nTempoUltimaVerificacao >= nTmpLog
      hb_threadStart( { |oThr|AtualizaAsaPrevGoogleDrive() })
      nTempoUltimaVerificacao:=Seconds()
   ENDIF
   hwg_doevents()
RETURN Nil

FUNCTION AtualizaAsaPrevGoogleDrive
LOCAL aDir, I
   
   IF File(HB_DirBase()+"ESTACAO.INI")

      hEstacaoCobranca:=HB_ReadIni(HB_DirBase()+"ESTACAO.INI" )
      cEstacaoCobranca:=hEstacaoCobranca["CONFIGURACAO"]["EstacaoCobranca"]

      IF AllTrim(GetEnv("COMPUTERNAME")) = AllTrim(cEstacaoCobranca) //Somente uma estção faz a atualização do sistema.
         aDir:=Directory(HB_DirBase()+"DRIVE\ASAPREV*.*")
         IF Len(Adir) > 0
            TRY
               FOR I:=1 TO Len(aDir)
                  IF Upper(aDir[I,1]) = "ASAPREV.EXE"
                     RenameFile(HB_DirBase()+aDir[I,1],HB_DirBase()+aDir[I,1]+"_"+DataHora()+".EXE" ) //Atualização "OnTheFly" renomeando.
                  ENDIF
                  __CopyFile(HB_DirBase()+"DRIVE"+HB_PS()+aDir[I,1],HB_DirBase()+aDir[I,1]) //Atualização "OnTheFly" copiando o novo executável.
                  FErase(HB_DirBase()+"DRIVE"+HB_PS()+aDir[I,1])
               NEXT
               IF File(HB_DirBase()+"ASAPREV.NEW") //Arquivo contendo as informações referentes a atualização.
                  hb_threadStart({|oThr|TocarSom("update.wav")}) //Alerta para chmamar a atenção do usuário, usuário está ciente.
                  MensagemTimeOut(FileStr(HB_DirBase()+"ASAPREV.NEW"),"Atenção",30000,1) //Mostra a mensagem referente a atualização (espera 30 seg).
                  Envia_Email({HB_DirBase()+"ASAPREV.NEW"},"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+HB_DtoC(Date(),"DD/MM/YYYY")+HB_EOL()+", feito pelo GoogleDrive.",.F.) //Envia email para mim informando que foi feito a atualização.
                  RenameFile(HB_DirBase()+"ASAPREV.NEW",HB_DirBase()+"ASAPREV_"+DataHora()+".NEW" ) //Salva para histórico.
               ENDIF
            END
         ENDIF
      ENDIF
   ENDIF
RETURN Nil

Atualização de sistema pelo GoogleDrive

Enviado: 20 Nov 2013 00:22
por fladimir
Vlw pela contribuição vou testar.

[]´s

Atualização de sistema pelo GoogleDrive

Enviado: 20 Nov 2013 10:17
por asimoes
Pessoal,

Outra coisa, como a pasta é sincronizada, se gravar qualquer outro arquivo nela podemos acessar pela página do googledrive de qualquer lugar!
Por exemplo arquivos de erros do sistema etc...

Atualização de sistema pelo GoogleDrive

Enviado: 16 Dez 2013 01:00
por rochinha
Amiguinhos,

:-Y

O interessante deste uso é o fato de se poder efeuar o backup de dados do cliente para um local além da empresa, transparente e seguro.

Atualização de sistema pelo GoogleDrive

Enviado: 20 Abr 2014 19:00
por fladimir
Boa tarde...

De onde vem nAtualizaLog e qual o valor inicial, pois não encontrei ela declarada no código então da forma q esta apresenta erro.

A mesma coisa para nTempoUltimaVerificacao.

Poderia definir pra nós.

[]´s

Atualização de sistema pelo GoogleDrive

Enviado: 20 Abr 2014 19:35
por Toledo
fladimir escreveu:De onde vem nAtualizaLog e qual o valor inicial
Veja linhas 3 e 6 do código.
fladimir escreveu:A mesma coisa para nTempoUltimaVerificacao
Veja linhas 11 e 12 do código.

Atualização de sistema pelo GoogleDrive

Enviado: 20 Abr 2014 20:15
por fladimir
Deve ser muito chocolate... kkk

Desculpa ai moçada...

[]´s

Atualização de sistema pelo GoogleDrive

Enviado: 21 Abr 2014 08:16
por asimoes
Fiz uma atualização na rotina este exemplo está melhor.

o Valor de QuebraHTML :="<br>"
Dentro do [code /code] aparece espaços

Código: Selecionar todos

STATIC nAtualizaLog2
STATIC nTempoUltimaVerificacao

FUNCTION MAIN

   ChecaAtualizacaoGoogleDrive()
   
RETURN Nil   

Código: Selecionar todos

FUNCTION ChecaAtualizacaoGoogleDrive
PUBLIC nTmpCheck:=60
   IF nAtualizaLog2 != Nil
      HB_IdleDel( nAtualizaLog2 )
   ENDIF
   nAtualizaLog2:=HB_IdleAdd( {|| ExecutaAtualizacaoGoogleDrive() } )
RETURN .T.

FUNCTION ExecutaAtualizacaoGoogleDrive
LOCAL hEstacaoCobranca, cEstacaoCobranca
   IF nTempoUltimaVerificacao = Nil
      nTempoUltimaVerificacao:=Seconds()
   ENDIF
   IF Seconds() - nTempoUltimaVerificacao >= nTmpCheck
      hb_ThreadStart(HB_THREAD_INHERIT_PUBLIC, @AtualizaAsaPrevGoogleDrive())
      nTempoUltimaVerificacao:=Seconds()
   ENDIF
   hwg_doevents()
RETURN Nil

FUNCTION AtualizaAsaPrevGoogleDrive
LOCAL aDir, I
   
   IF File(HB_DirBase()+"ESTACAO.INI")

      hEstacaoCobranca:=HB_ReadIni(HB_DirBase()+"ESTACAO.INI" )
      cEstacaoCobranca:=hEstacaoCobranca["CONFIGURACAO"]["EstacaoCobranca"]

      IF AllTrim(GetEnv("COMPUTERNAME")) = AllTrim(cEstacaoCobranca) //Somente uma estação faz a atualização do sistema.
         aDir:=Directory(HB_DirBase()+"DRIVE\UPDATE\ASAPREV.*") //Drive virtual do GoogleDrive
         IF Len(aDir) = 3
            TRY
               FOR I:=1 TO Len(aDir)
                  IF Upper(aDir[I,1]) = "ASAPREV.EXE"
                     RenameFile(HB_DirBase()+aDir[I,1],HB_DirBase()+aDir[I,1]+"_"+DataHora()+".EXE" ) //Atualização "OnTheFly" renomeando.
                  ENDIF
                  IF Upper(aDir[I,1]) = "ASAPREV.INI" //Arquivo contendo as informações referentes ao sistema.
                     RenameFile(HB_DirBase()+"ASAPREV.INI",HB_DirBase()+"ASAPREV_"+DataHora()+".INI" ) //Salva para histórico.
                  ENDIF
                  IF Upper(aDir[I,1]) = "ASAPREV.NEW" //Arquivo contendo as informações referentes ao sistema.
                     RenameFile(HB_DirBase()+"ASAPREV.NEW",HB_DirBase()+"ASAPREV_"+DataHora()+".NEW" ) //Salva para histórico.
                  ENDIF
                  CopyFile(HB_DirBase()+"DRIVE\UPDATE"+HB_PS()+aDir[I,1],HB_DirBase()) //Atualização "OnTheFly" copiando o novo executável.
                  FErase(HB_DirBase()+"DRIVE\UPDATE"+HB_PS()+aDir[I,1])
               NEXT
               IF File(HB_DirBase()+"ASAPREV.NEW") //Arquivo contendo as informações referentes a atualização.
                  hb_threadStart({|oThr|TocarSom("update.wav")}) //Alerta para chmamar a atenção do usuário, usuário está ciente.
                  hwg_MsgInfo(FileStr(HB_DirBase()+"ASAPREV.NEW"),"Atualização de Sistema") //Mostra a mensagem referente a atualização.
                  //MensagemTimeOut(FileStr(HB_DirBase()+"ASAPREV.NEW"),"Atenção",30000,1) //Mostra a mensagem referente a atualização (espera 30 seg).
                  //FF0000 = Vermelho
                  //AzulHTML    :='<span style="color:#0000FF">'
                  //VermelhoHTML:='<span style="color:#FF0000">'
                  //QuebraHTML  :="<br>"
                  //   cMensagem:='<span style="color:#0000FF">'+"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+HB_DtoC(Date(),"DD/MM/YYYY")+"<br>"+;
                  //   '<span style="color:#FF0000">'+"Feito pelo GoogleDrive."
                   AzulHTML    :='<span style="color:#0000FF">'
                   VermelhoHTML:='<span style="color:#FF0000">'
                   QuebraHTML  :="<br>"
                   cMensagem:=AzulHTML    +"Log de confirma‡Æo de atualiza‡Æo de sistema em: "+HB_DtoC(Date(),"DD/MM/YYYY")+QuebraHTML+;
                             VermelhoHTML+"Feito pelo GoogleDrive."
                  Envia_Email({HB_DirBase()+"ASAPREV.NEW"},,cMensagem,.F.) //Envia email para mim informando que foi feito a atualização.
               ENDIF
            CATCH
               hwg_MsgStop("Erro na atualização do sistema.","Atenção")
            END
         ENDIF
      ENDIF
   ENDIF
RETURN Nil

FUNCTION CopyFile(cSource,cTarget)
LOCAL oFile, lOk:=.T.

   /*
   Mantém os atributos do arquivo de data e hora.
   CopyFile("asaprev.exe","c:\temp\") // copiar para um diretório
   CopyFile("asaprev.exe","c:\temp\asaprev2.exe") // copiar para um diretório com outro nome.
   */
   
   TRY
      oFile:=CreateObject("Scripting.FileSystemObject") 
   CATCH
      TRY
         oFile:=CreateObject("Scripting.FileSystemObject") 
      CATCH
         lOk:=.F.
      END
   END
   IF lOk
      TRY
         oFile:CopyFile(cSource, cTarget )
         //Copiar diretório.
         //oFile:CopyFolder("c:\mydocuments\letters\*","c:\tempfolder\")
      CATCH
         lOk:=.F.
      END
   ENDIF
RETURN lOk