Files
vfp_roaauto/COMUN/programe/actualizare_aplicatie.prg

135 lines
3.4 KiB
Plaintext

LPARAMETERS tcProgram, tcVersiuneURL
*** IN LUCRU
* tcProgram: ROAEFACTURA
* tcVersiuneURL: https://www.romfast.ro/romfastsuport/files/suport.xml
#DEFINE CRLF CHR(13) + CHR(10)
lcProgram = IIF(!EMPTY(m.tcProgram), UPPER(ALLTRIM(m.tcProgram)), UPPER(ALLTRIM(SYS(16,0))))
lcServer = IIF(!EMPTY(m.tcVersiuneURL), m.tcVersiuneURL, [https://www.romfast.ro/romfastsuport/files/suport.xml])
llSucces = .F.
Try
loHTTP = Createobject('winHTTP.winHTTPrequest.5.1')
llSucces = .T.
CATCH TO loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
ENDTRY
IF m.llSucces
llSucces = .F.
TRY
This.Log(m.lcServer)
loHTTP.Open('GET', lcServer, .F.)
loHTTP.setRequestHeader("Content-Type", "application/xml")
loHTTP.Send()
llSucces = .T.
Catch To loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
Endtry
ENDIF
IF m.llSucces
If loHTTP.Status <> 200
This.Log('Actualizare aplicatie ' + loHTTP.StatusText)
llSucces = .F.
ELSE
goApp.Log('Actualizare aplicatie - versiunexml: SUCCES')
Endif
ENDIF
IF m.llSucces
llSucces = .F.
* Versiunea programului
lcVersiuneClient = get_version(.F.,.T.)
* Versiunea de pe server
TRY
lcVersiuneXML = loHTTP.ResponseText
XMLTOCURSOR(m.lcVersiuneXML, 'crsVersiuni')
lcVersiuneServer = ''
lcServer = ''
SELECT crsVersiuni
LOCATE FOR UPPER(ALLTRIM(program)) = m.lcProgram
IF FOUND()
lcVersiuneServer = ALLTRIM(UPPER(versiune))
lcServer = ALLTRIM(fisier) && url aplicatie.exe
llSucces = .T.
ENDIF
CATCH TO loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
ENDTRY
ENDIF
If m.llSucces AND m.lcVersiuneServer <> m.lcVersiuneClient AND !EMPTY(m.lcServer)
llSucces = .F.
TRY
This.Log(m.lcServer)
loHTTP.Open('GET', lcServer, .F.)
loHTTP.setRequestHeader("Content-Type", "application/vnd.microsoft.portable-executable")
loHTTP.Send()
llSucces = .T.
Catch To loEx
This.Log('Actualizare aplicatie - Eroare: ' + loEx.Message)
Endtry
IF m.llSucces
If loHTTP.Status <> 200
This.Log('Actualizare aplicatie - Eroare: ' + loHTTP.StatusText)
llSucces = .F.
ELSE
This.Log('Actualizare aplicatie - program.exe Succes')
ENDIF
ENDIF
Endif
If !llDownloaded
Return
ENDIF
lcBatFile = Addbs(Justpath(m.lcDestinationFile)) + 'UPDATE.BAT'
Set Textmerge On To (m.lcBatFile) Noshow
*!* wait 5 seconds for the application to quit
\@ping 127.0.0.1 -n 10 -w 1000 > nul
*!* rename original application
\REN "<<m.lcApplicationFile>>" "<<JUSTFNAME(m.lcBackupApplicationFile)>>"
*!* execute the new sfx archive - the sfx archive will start the application by itself
\START "" "<<m.lcDestinationFile>>"
\@ping 127.0.0.1 -n 5 -w 1000 > nul
*!* delete the archive
\DEL "<<m.lcDestinationFile>>"
Set Textmerge To
*!* DEZARHIVEZ APLICATIA DESCARCATA
llSucces = .F.
Try
Cd (Justpath(m.lcApplicationFile))
loProcess=Createobject("api_apprun", m.lcBatFile)
goApp.Log("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile))
loProcess.launchapp()
llSucces = .T.
Catch To loException
goApp.Log("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile) + " " + CRLF + loEx.Message)
Messagebox("EXECUTARE PROGRAM;"+ " " + Alltrim(m.lcBatFile) + " " + CRLF + loEx.Message,0+16, _Screen.Caption)
Endtry
If llSucces
On Error
On Shutdown
Set Procedure To
Set Library To
Set Classlib To
Clear Events
If _vfp.StartMode <> 0
Quit
Else
Return .F.
Endif
Endif