USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Arquivo.exe atualizando ele mesmo??
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 23/05/2006 11:44 hs         
Olá,
 
Eu estou tendo um problema onde não achei solução ainda:
como fazer pra Arquivo.exe atualizar ele mesmo: antes de fechar, depois de abrir?
 
O programa que estou fazendo manutenção é um atualizador de arquivo conforme o nº de versão local e servidor.
 
A parte da rotina que faz a atualização segue abaixo:
 
'--- Se retornar 0 em vez de bytes do arquivo, o mesmo já está totalmente transferido ---'
    '--- e deve ter sua integridade verificada ---'
    strReadString = objMcSerial.GetField(POS_ASWDWL_READSTRING)
    If strReadString = "0" Then
        arrFileInfo(iCount).dblPercDwl = CalcPercDwl(dblFileSize, arrFileInfo(iCount).dblPosAtual)
       
        If InStr(strNomeArqv, "BTSMenu") <> 0 Then
            MsgBox "O BTS Menu será fechado.", vbInformation, "SpyVersion"
            Call CloseProcess(strNomeArqv)
            objFSO.CopyFile App.Path & "" & strNomeArqv, App.Path & "Spy_" & g_strCodSistema & "_OLD", True
            objFSO.MoveFile App.Path & "Spy_" & g_strCodSistema & "" & strTempFile, strNomeArqv
            Unload Me
        ElseIf InStr(strNomeArqv, "SpyVersion") <> 0 Then
            MsgBox "O SpyVersion será fechado.", vbInformation, "SpyVersion"
            objFSO.CopyFile App.Path & "" & strNomeArqv, App.Path & "Spy_" & g_strCodSistema & "_OLD", True
            objFSO.MoveFile App.Path & "Spy_" & g_strCodSistema & "" & strTempFile, "SpyVersion.exe.new"
            Unload Me
        Else
            '--- Mata o executável(processo) da memória antes de finalizar a atualização ---'
            Call CloseProcess(strNomeArqv)
   
            m_objBTS.GetBTSSpyMD5Check g_strCodSistema, CStr(intCodModl), CStr(intCodArqv), strTempFile
        End If
    Else
        strTempPath = GetTempPath(g_strCodSistema)
        If Not objFSO.FolderExists(strTempPath) Then
            objFSO.CreateFolder strTempPath
        End If
       
        If WriteFileString(strTempPath & strTempFile, strReadString) Then
            arrFileInfo(iCount).dblPercDwl = CalcPercDwl(dblFileSize, objFSO.GetFile(strTempPath & strTempFile).Size)
            arrFileInfo(iCount).intStatus = DWL_STATUS_CONTINUE
            m_objBTS.DownloadBTSSpyFile g_strCodSistema, intCodModl, intCodArqv, objFSO.GetFile(strTempPath & strTempFile).Size, strTempFile
        Else
            GoTo Erro_m_objBTS_FileDownloadArrived
        End If
    End If

http://www.vilmarbro.com.br
   
Tekki
Pontos: 2843 Pontos: 2843 Pontos: 2843
UBERLÂNDIA
MG - BRASIL
ENUNCIADA !
Postada em 19/08/2006 14:44 hs            
   
vilmarbr
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 21/08/2006 11:43 hs         
A solução que é tomada aki foi um outro EXE atualizar o EXE desejado.
Arquivo.exe é atualizado pelo ArquivoAtualiza.exe.
 
E no caso de erro na atualização foi usado isto:
            Select Case GetMaxError
            Case 0, ERROR_ACCESS_DENIED, ERROR_LOCK_VIOLATION, ERROR_SHARING_VIOLATION
                'A atualização em qualquer um dos casos acima, apenas ocorrerá após o reboot(reinício) do computador.
                MoveFileEx strDestFile, vbNullString, MOVEFILE_DELAY_UNTIL_REBOOT
                MoveFileEx strTempFile, strDestFile, MOVEFILE_DELAY_UNTIL_REBOOT
                arrFileInfo(iCount).blnRestart = True
            Case Else
                strMsgErro = "Erro na cópia do arquivo: " & strDestFile
                GoTo Erro_UpdateFile
            End Select
 
 
Erro_UpdateFile:
    Set objFSO = Nothing
    Dim blnShowError As Boolean
    If strMsgErro = "" Then strMsgErro = Err.Description
    If Me.WindowState = vbNormal Then blnShowError = True
    CreateLog "frmSpyVersion:UpdateFile: " & strMsgErro, blnShowError
    Form_Unload 0
 
OBRIGADO!

http://www.vilmarbro.com.br
TÓPICO EDITADO
 
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página