You need to install in 5 different directories.
Then you would need 5 different projects generating 5 different COM objects, say IPprod1, IPprod2, IPprod3, IPprod4, IPprod5
The good news is that you can fully automate the exe generation, upload and live switch.
You would write something like:
* myAppUpdate.prg LPARAMETERS tlBuildExe && [.T.] IF PCOUNT() = 0 CLEAR ALL LOCAL tlBuildExe tlBuildExe = .T. ELSE tlBuildExe = VARTYPE(m.tlBuildExe) == 'L' AND m.tlBuildExe ENDIF AW() DO myServerUpdate.prg WITH 'IPprod1', m.tlBuildExe DO myServerUpdate.prg WITH 'IPprod2', m.tlBuildExe DO myServerUpdate.prg WITH 'IPprod3', m.tlBuildExe DO myServerUpdate.prg WITH 'IPprod4', m.tlBuildExe DO myServerUpdate.prg WITH 'IPprod5', m.tlBuildExe * myServerUpdate.prg LPARAMETERS tcApp, m.tlBuildExe LOCAL lcEXE, lcURL lcEXE = ForceExt(m.tcApp, 'exe') lcURL = Textmerge([http://mysite.com/<<JustStem(m.tcApp)>>/]) && for instance RETURN awServerUpload(; m.lcEXE; , m.lcURL; , m.tlBuildExe; , 'myLogin'; , 'myPassWord'; , '/myUploadFTPDirectory/'; && where updateExe is set in wc.ini )
I understand how it works. The requirements are for a different "site" for each client with the security I mentioned. Unfortunately I cannot change their requirements, or I would. The requirements were probably written years ago.
things are slightly different on a web server ...
In COM/production mode, your wConnect application runs under the account you choose - it may be a generic administrator account having right over your various clients folders.
Using such or such table in wUserSet() has no implication in terms of security.
I cannot do that under the rules of their security. No two clients can even have access to the same folders, let alone tables.
If you are using FoxInCloud, you can, in yourForm.Load, use a dummy set of tables and, in youForm.wUserSet(), re-use the proper table(s) for the user.
-- thn (FoxInCloud)