Import initial din SVN ROAAUTO/Trunk @HEAD
This commit is contained in:
134
COMUN/programe/actualizare_aplicatie.prg
Normal file
134
COMUN/programe/actualizare_aplicatie.prg
Normal file
@@ -0,0 +1,134 @@
|
||||
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
|
||||
Reference in New Issue
Block a user