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