;** Atualiz  *******************************************************************
;*  Atualiza‡„o do Sistema                                                     *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 12/08/2005 por Davi Pereira Carrano
;Ultima Alteracao: 11/11/05 por Davi Pereira Carrano
;Motivo Alteracao: retirada a parte lognet
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Deleta_Arquivo()
;Ultima Alteracao: 13/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Inclusao Deleta_Arquivo()
;Ultima Alteracao: 14/08/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Cria_Pasta, Deleta_Pasta, Deleta_Arvore
;Ultima Alteracao: 06/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 20/11/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Sleep/Copia_Arquivo
;Ultima Alteracao: 05/12/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Copia Bibliotecas
;Ultima Alteracao: 08/04/2008 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Libera Reestruturacao Sim/Nao
;Ultima Alteracao: 07/02/2017 por Bruno Carvalho
;Motivo Alteracao: Otimiza‡Æo no processo ao instalar mais de um pacotes de atualiza‡Æo de uma s¢ vez

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bib_Show,\\Sistemas\\Cadastro\\Bibliot"

Password "FechaSys"
;----------------- Analisando Versäes -----------------
View "SysTable"
VERSAO_ATUAL    =SubStr([Versao_atual],1,6)
VERSAO_ATUAL_AUX=SubStr([Versao_atual],1,4)+SubStr([Versao_atual],6,1)
ClearAll
If SubStr(VERSAO_ATUAL,6,1)="L"
   Then Prox_Versao    =StrVal(NumVal(SubStr(VERSAO_ATUAL,1,4))+1)+".A"
        Prox_Versao_Aux=StrVal(NumVal(SubStr(VERSAO_ATUAL,1,4))+1)+"A"
   Else Prox_Versao    =SubStr(VERSAO_ATUAL,1,4)+"."+Chr(Asc(SubStr(VERSAO_ATUAL,6,1))+1)
        Prox_Versao_Aux=SubStr(VERSAO_ATUAL,1,4)+Chr(Asc(SubStr(VERSAO_ATUAL,6,1))+1)
EndIf 

;---- Verificando a existˆncia de versäes novas ou acumulado -------------------
Acumulado = False
If (Not IsFile("C:\\Vise\\Update\\AT"+Prox_Versao_Aux+".exe"))
   Then ;VersÆo Atual  
        If (IsFile("C:\\Vise\\Update\\AT"+VERSAO_ATUAL_AUX+".exe"))
           Then Prox_Versao_Aux = VERSAO_ATUAL_AUX
           Else ;Acumulado 
                If (IsFile("C:\\Vise\\Update\\Ac"+VERSAO_ATUAL_AUX+".exe"))
                   Then Prox_Versao_Aux = VERSAO_ATUAL_AUX
                        Acumulado = True
                   Else MSG=    "N„o existe vers„o a ser atualizada !"
                        MSG=MSG+"// //Poss¡veis Problemas:"
                        MSG=MSG+"//* Vocˆ n„o executou o arquivo de atualiza‡„o baixado da internet"
                        MSG=MSG+"//* Vocˆ executou este arquivo de atualiza‡„o em outra m quina"
                        Mensagem(MSG)
                        Return
                EndIf        
        EndIf        
EndIf

;---- Copiando VersÆo para a PASTA DE TRABALHO ---------------------------------
PASTA_TRABALHO = "Update"  
PASTA_TRABALHO = "Update\\"+Prox_Versao_Aux

If DirExists("C:\\Vise\\"+PASTA_TRABALHO)=0
   Then Cria_Pasta("C:\\Vise\\"+PASTA_TRABALHO)
        Sleep 2000
EndIf
  
If Acumulado 
   Then Copia_Arquivo("C:\\Vise\\Update\\ac"+Prox_Versao_Aux+".exe"+" "+"C:\\Vise\\Update\\"+Prox_Versao_Aux+"\\ac"+Prox_Versao_Aux+".exe")
   Else Copia_Arquivo("C:\\Vise\\Update\\at"+Prox_Versao_Aux+".exe"+" "+"C:\\Vise\\Update\\"+Prox_Versao_Aux+"\\at"+Prox_Versao_Aux+".exe")
EndIf

If IsFile("C:\\Vise\\"+PASTA_TRABALHO+"\\Bibliot.sc")
   Then {Tools} {Copy} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\Bibliot" Enter "Bibliot" Enter
        If MenuChoice()="Cancel"
           Then {Replace}
        EndIf
        {Tools} {Delete} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\Bibliot" Enter {Ok}
        Play "Bibliot"
        {Tools} {Delete} {Script} "Bibliot" Enter {Ok}
EndIf
        
If IsFile("C:\\Vise\\"+PASTA_TRABALHO+"\\Bib_show.sc")
   Then {Tools} {Copy} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\Bib_Show" Enter "Bib_Show" Enter
        If MenuChoice()="Cancel"
           Then {Replace}
        EndIf
        {Tools} {Delete} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\Bib_Show" Enter {Ok}
        Play "Bib_Show"
        {Tools} {Delete} {Script} "Bib_Show" Enter {Ok}
EndIf
        
If IsFile("C:\\Vise\\"+PASTA_TRABALHO+"\\Bibmenu.sc")
   Then {Tools} {Copy} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\BibMenu" Enter "BibMenu" Enter
        If MenuChoice()="Cancel"
           Then {Replace}
        EndIf
        {Tools} {Delete} {Script} TypeIn "C:\\Vise\\"+PASTA_TRABALHO+"\\BibMenu" Enter {Ok}
        Play "BibMenu"
        {Tools} {Delete} {Script} "BibMenu" Enter {Ok}
EndIf

ClearAll
Clear
        
DRIVE=SubStr(Directory(),1,2)
Autolib=DRIVE+"\\Sistemas\\Cadastro\\Bibliot,"+DRIVE+"\\Sistemas\\Cadastro\\Bib_show"

If Not Checa_Supervisor() Then Return False EndIf
If Not Verifica_Usuario() Then return false EndIf

ConfGeral("Vocˆ j  realizou o BACKUP GERAL do sistema ?")
If OK<>"S"
   Then Return False
EndIf

;------------------ Deletando arquivos de outras atualiza‡äes -------------
If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas")>0
   Then Deleta_Arvore("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas")
        Sleep(1000)   
EndIf
If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Base")>0
   Then Deleta_Arvore("C:\\Vise\\"+PASTA_TRABALHO+"\\Base")
        Sleep(1000)   
EndIf
ClearAll

MSG=    "Existe uma nova vers„o a ser atualizada "+Prox_Versao
MSG=MSG+"// Deseja realmente atualiz -la ?"
ConfGeral(MSG)
If OK<>"S"
   Then Return False
EndIf

Dir_Atual=Directory()
SetDir "C:\\Vise\\"+PASTA_TRABALHO+""
If Acumulado
   Then Executa_Programa("ac"+Prox_Versao_Aux+" -gvise2005 -y")
   Else Executa_Programa("at"+Prox_Versao_Aux+" -gvise2005 -y")
EndIf
Sleep(1000)   

SetDir Dir_Atual

If Not IsFile("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas\\Versao.sc")
   Then MSG=    "N„o existe vers„o a ser atualizada !"
        MSG=MSG+"// //Poss¡veis Problemas:"
        MSG=MSG+"//* Vocˆ n„o executou o arquivo de atualiza‡„o baixado da internet"
        MSG=MSG+"//* Vocˆ executou este arquivo de atualiza‡„o em outra m quina"
        Mensagem(MSG)
        return
EndIf
Play "C:\\Vise\\Update\\"+Prox_Versao_Aux+"\\Sistemas\\Versao"

;----------------- Copiando a pasta Base e Sistema para atualizar -----
If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Base")>0
   Then XCopia_arquivo("C:\\Vise\\"+PASTA_TRABALHO+"\\Base\\*.* \\Base /S")
        Sleep(1000)
EndIf
If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas")>0
   Then XCopia_Arquivo("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas\\*.* \\Sistemas /S")
        Sleep(1000)
EndIf

If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Base")>0
   Then Deleta_Arvore("C:\\Vise\\"+PASTA_TRABALHO+"\\Base")
        Sleep(1000)
EndIf
If DirExists("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas")>0
   Then Deleta_Arvore("C:\\Vise\\"+PASTA_TRABALHO+"\\Sistemas")
        Sleep(1000)
EndIf

If IsFile("\\Sistemas\\Versao.sc")
   Then {Tools} {Delete} {Script} TypeIn "\\Sistemas\\Versao" Enter {Ok}
EndIf
ClearAll
RESTRUTURACAO_AUTOMATICA="S"
;-------------------- Executando Datam ---------------------------------
Letra=""
For wx From 1 to 24
  If IsFile("\\Sistemas\\Cadastro\\Datam"+Letra+".sc")
     Then Message("Atualizando Pacote ["+Letra+"]")
          Play "\\Sistemas\\Cadastro\\Datam"+Letra
          Deleta_Arquivo("\\Sistemas\\Cadastro\\Datam"+Letra+".sc")
     Else QuitLoop
  EndIf
  Letra=CHR(64+wx)
EndFor

;--------- Deleta os arquivos de atualiza‡„o ----------------
If Acumulado
   Then Deleta_Arquivo("C:\\Vise\\Update\\ac"+Prox_Versao_Aux+".exe")
        Deleta_Arquivo("C:\\Vise\\"+PASTA_TRABALHO+"\\ac"+Prox_Versao_Aux+".exe")
   Else Deleta_Arquivo("C:\\Vise\\Update\\at"+Prox_Versao_Aux+".exe")
        Deleta_Arquivo("C:\\Vise\\"+PASTA_TRABALHO+"\\at"+Prox_Versao_Aux+".exe")
EndIf   
Deleta_Arquivo("C:\\Vise\\Update\\leiame.html")
Deleta_Arvore("C:\\Vise\\Update\\leiame_arquivos")
;AO APAGAR A PASTA DE TRABALHO, ESTA SAINDO DO SISTEMA
;Deleta_Arvore("C:\\Vise\\Update\\"+Prox_Versao_Aux)

Executa_Restruturacao=true
;---- Processo para "PULAR" a reestrutura‡Æo se tem mais pacotes a ser atualizados 
If Checa_Supervisor()
   Then CONT_EXE = 0
        {Tools} {Info} {Inventory} {Files} TypeIn "C:\\Vise\\Update" Enter ClearImage 
        If Not IsEmpty("List")
           Then View "List"
                Scan
                  If Search(".EXE",Upper([Name])) > 0
                     Then CONT_EXE = CONT_EXE + 1
                  EndIf
                EndScan
                ClearImage    
        EndIf
        If CONT_EXE >= 1
           Then Executa_Restruturacao = False
                Password "t01avivcl"
                Play "Savevars"
                Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_show"
        EndIf   
EndIf   
   
CONT_TABLE_ERROR = 0
If Executa_Restruturacao
	 Then ;----------------- Executando Reestrutura‡„o --------------------------
        MSG="Aguarde o t‚rmino da reestrutura‡„o completa !"
				Password "t01avivcl"
        Libera_Bloqueio(MSG)
        If Ok<>"S"
           Then Savevars All
                Play "Restruct"
                Play "Savevars"
                Autolib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_show"
        Endif
EndIf
If CONT_TABLE_ERROR = 0
   Then ;----------------- Corrigindo Autor -----------------
        Password "FechaSys"
        Coedit "Systable"
        [Versao_atual]=SYS_NV+" de "+DATA_NV
        Do_It!
        ClearAll                                 
        Mensagem("Vers„o "+SYS_NV+" atualizada!")

   Else MSG="Foi detectado que "+StrVal(CONT_TABLE_ERROR)+" tabela(s) "
        MSG=MSG+"//apresentaram inconsistˆncia durante a reestrutura‡„o !//"
        MSG=MSG+"//Entre em contato com o suporte imediatamente para"
        MSG=MSG+"//que esta nova vers„o seja devidamente atualizada !"
        Mensagem(MSG)
EndIf
