I've uploaded this to the ProFox downloads page in a text file, pending approval. I think I've got all the components included in that text file. Works well for me.

-------- Original Message --------
Subject: RE: VFP9SP2 apps on Citrix
Date: 2017-08-14 13:30
From: [email protected]
To: ProFox Email List <[email protected]>
Reply-To:

On 2017-08-14 10:59, Richard Kaye wrote:
Having a great deal of respect for your VFP chops, is your loader
something you can share, Dave? I'm always curious about the mechanics
of these types of things.

--

rk


Here's a copy/paste from FabNet, called from my Main.prg:

PROCEDURE CheckForNewerVersion()
LOCAL lcServerVersion as String, lcLocalVersion as String, lcLANFile as String, loData as _dataVersions OF .\progs\_dataVersions.prg, ; loShell as _ShellExecute OF HOME()+"ffc\environ.vcx", loRec as Object, llUpdateLAN as Logical, llMissing as Logical, lcLANVersion as String
LOCAL ARRAY laInfo[1]
lcLocalVersion = _screen.cversion && SetVersion()
lcLANFile = ReadINI("General","SetupFile",'')
loShell = NEWOBJECT("_ShellExecute", "_environ.vcx")

*** mjb 09/18/2015 - updated for Admin user, plus grabbing EXE from cloud *** mjb 02/17/2016 - DEV NOTE: This needs work yet to grab latest installer from web database and put in lcLANFile location; will finish later
IF NOT EMPTY(lcLANFile) THEN
        WAIT WINDOW NOWAIT "Checking master source for latest update..."
        loData = NEWOBJECT("_dataVersions",".\progs\_dataVersions.prg")
*** mjb 02/17/2016 - moved this next IF block outside the next IF block after that so as to get lcLANVersion for the 3rd IF block
        IF FILE(lcLANFile) THEN && see if LAN version is the cLatestVersion
                lcLANVersion = GetVersion(lcLANFile)
                CopyInstallerLocally(lcLANFile,ALLTRIM(lcLANVersion)) && mjb 
05-11-16
llUpdateLAN = loData.ConvertVersionToNumber(lcLANVersion) <> loData.ConvertVersionToNumber(oUtils.oClient.cLatestVersion)
        ELSE && update LAN with latest from web database
                llMissing = .T.
                llUpdateLAN = .T.
        ENDIF
*** mjb 02/17/2016 - added iNetwork = 1 to only run this IF block for MBSS Cloud clients IF oUtils.iNetwork = 1 AND loData.ConvertVersionToNumber(lcLocalVersion) < loData.ConvertVersionToNumber(oUtils.oClient.cLatestVersion) THEN && verify update exe's version is as expected
                *** mjb 12/28/2015 - added check to only run this for 
PRODUCTION run
                IF oUtils.oConnection.Descript = "Production" AND llUpdateLAN 
THEN
                        *** mjb 12/18/2015 - for now, just alert them
                        IF llMissing THEN
MESSAGEBOX(oUtils.Get_Translation("Your network installation file appears to be missing. This is not critical; this just allows you to have your computers update from a common spot on your network rather than the internet. Contact MBSS if you need assistance."),16,oUtils.Get_Translation("Update file missing"))
                        ELSE
MESSAGEBOX(oUtils.Get_Translation("Your network installation file (" + ALLTRIM(lcLANFile) + ") appears to be outdated (version " + ALLTRIM(lcLANVersion) + "). Contact MBSS if you need assistance."),48,oUtils.Get_Translation("Update file out of date"))
                        ENDIF && llMissing
                ENDIF && llUpdateLAN
ENDIF && loData.ConvertVersionToNumber(lcLocalVersion) < loData.ConvertVersionToNumber(oUtils.oClient.cLatestVersion)

        IF FILE(lcLANFile) THEN
                lcServerVersion = GetVersion(lcLANFile)
                IF NOT EMPTY(lcServerVersion) THEN
                        IF lcServerVersion > lcLocalVersion THEN
IF MESSAGEBOX(oUtils.Get_Translation("An update is available for this application (version") + " " + lcServerVersion + "). " + oUtils.Get_Translation("Do you want to upgrade?"),4+32+0,oUtils.Get_Translation("Upgrade available.")) = 6 THEN && launch setup from server and quit this app *** mjb 02/17/2016 - changed next line to lcLANFile instead of lcFile
                                        
loShell.ShellExecute(FULLPATH(lcLANFile))
                                        RELEASE loShell
                                        oUtils.Shutdown_System() && mjb 
05-13-16 was QUIT
                                ENDIF && msgbox = 6
                        ENDIF && lcServerVersion > lcLocalVersion
                ELSE
                        SET STEP ON
                ENDIF && NOT EMPTY(lcServerVersion)
        ENDIF && FILE(lcLANFile)
ENDIF && NOT EMPTY(lcLANFile)
ENDPROC && CheckForNewerVersion()


FUNCTION GetVersion(tcFile as String) as String
*** mjb 09/24/2015 - created to quickly check version # on files
LOCAL ARRAY laInfo[1]
LOCAL lcVersion as String, loException as Exception
TRY
        lcVersion = ''
        IF FILE(tcFile) THEN
                AGETFILEVERSION(laInfo,tcFile)
                lcVersion = laInfo[4]
        ENDIF
CATCH TO loException
        lcVersion = ''
ENDTRY
RETURN lcVersion
ENDFUNC && GetVersion(tcFile as String) as String


from my data object:
FUNCTION ConvertVersionToNumber(tcVersion) as Number
LOCAL lnNumber as Number, liMajor as Integer, liMinor as Integer, liRevision as Integer, liMultiplier as Integer
        IF NOT EMPTY(tcVersion) THEN
                liMultiplier = 10000
                liMajor = VAL(GETWORDNUM(tcVersion,1,"."))
                liMinor = VAL(GETWORDNUM(tcVersion,2,"."))
                liRevision = VAL(GETWORDNUM(tcVersion,3,"."))
lnNumber = (liMajor * liMultiplier^2) + (liMinor * liMultiplier^1) + (liRevision * liMultiplier^0) && could have skipped liMultiplier^0 but kept for logical flow
        ELSE
                lnNumber = 0
        ENDIF && NOT EMPTY(tcVersion)
        RETURN lnNumber
ENDFUNC && ConvertVersionToNumber(tcVersion) as Number


[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to