Thanks Nigel for your code.

In my situation I have a dialog which gives the user an option to choose
which data file they want to open:

www.fortuna.com.au/4D_issues/startup-dialog.png

So the user can either open/setup his/her file or explore a demo data file.
This was all cool till I put the object for days to expiry. This
information only comes from the Fortuna.4DD file and not from the
FortunaDemo.4DD file. I could have stored the activation date on some
hidden folder somewhere. But decided that it may be best to simply restart
the Application if it has been opened with the Live User data file. It is
kind of counter-intuitive as one would think how is the user ever going to
open the demo data file?

For this I create a text file where I store the information of whether to
present this startup option or not. So that each time the application
launches it always opens with the Live Data and the startup option. If the
user selects to open the Live Data it just proceeds as normal. However if
the user chooses to open the demo data we set the text file so the startup
dialog is not presented and the application restarts with the demo data
file.

This is working well for me now..

When I posted this, I thought it would be easier to know which data file
the application is going to open next read that information rather than try
to set the flag this way.










On Tue, Dec 20, 2016 at 1:20 AM, Nigel Greenlee <[email protected]>
wrote:

> Sujit.
>
>
>
> You can control where the default datafile is using  build with xml keys…i
> hope the following does not stray far from what you are trying to do….
>
>
>
>  I know that at one point I wanted to a make a downloadable single user
> demo version of a product AND i wanted  new client server builds to guide
> the existing customers to open their correct current datafile.
>
>  Realising that ‘virgin’ users confronted with ‘open datafile’ dialogues
> will wail in horror(and probably would end up creating a blank datafile) I
> did the following:
>
> 1) You will see in the code i get the ‘current data file’. I do this
> pretty much before anything else in my startup method-I don't know of any
> other way to interrogate it other than within the code-the method i use
> allows switching to another datafile on startup..(well not really on
> startup actually AFTER startup).
>
> In my startup method if the ‘wrong’ datafile is in use is don't do
> anything(i am a fan of doing as little as possible at startup anyway).
>
> While (Semaphore("$DuringLogin"))
> DelayTicks
> End while
> If (DB_ControlDataFilePath )
>
> CLEAR SEMAPHORE("$DuringLogin”)
> //the correct datafile is in use carry on.
> else
> CLEAR SEMAPHORE("$DuringLogin")
> //don't do anything just let startup end-see what DB_ControlDataFilePath
> does to restart with the correct datafile.
>
> end if
>
>
> 2) Using a build key strategy i made sure there default datafile inside my
> package(not a good place to keep a datafile when someone overwrites the
> package). This was the demo datafile I wanted users to use.
>
> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
> <Preferences4D>
>
>   <BuildApp>
>     <BuildApplicationName>Database</BuildApplicationName>
>     <BuildWinDestFolder/>
>     <BuildMacDestFolder>::Database_Build:</BuildMacDestFolder>
>     <DataFilePath>:DemoData.4DD</DataFilePath>
>
> Most of what i am doing here does not rely on the build with xml keys
> being used(that was really for doing a distributable structure to potential
> customers without having to go into complicated explanations about
> data-files)
>
> 3) On launch of the database I look for an invisible document that i
> create in the users document folder(Other strategies may be used for this
> of course-it would be better maybe if they were stored in for example
> 'Library/Application Support’ on a Mac). In the document  i stored the path
> to the ‘real’ datafile. This meant that on first launch this document did
> not exist so it was created and the user was asked where they would like to
> store the data(offering them their document folder as a default). On that
> initial launch i then move the datafile store from  inside the package to
> that location and store the path in the invisible document.
>
> 4)  if the document exists then look to see if we are opening the last
> used datafile and if not switch it(in single user mode) or ask in client
> server mode.
>
> There are some nuances to the way you do this so I have posted a copy of
> the code i use on my drop box
>
> https://www.dropbox.com/s/j7vb6b6jgrfg5xq/DB_ControlDataFilePath.txt?dl=0
> <https://www.dropbox.com/s/j7vb6b6jgrfg5xq/DB_ControlDataFilePath.txt?dl=0
> >
>
> Feel free to come back with any questions-the code is kind of self
> explanatory
>
> Nigel Greenlee
>
> > On 16 Dec 2016, at 02:03, Sujit Shah <[email protected]> wrote:
> >
> > Does anyone know where 4D Stores the default Data file an application
> opens
> > with?
> >
> > I know it opens the last Data file opened but where is this information
> > stored?
> >
> > --
> >
> > xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> > "There must be ingenuity as well as intention, strategy as well as
> > strength. "
> > **********************************************************************
> > 4D Internet Users Group (4D iNUG)
> > FAQ:  http://lists.4d.com/faqnug.html
> > Archive:  http://lists.4d.com/archives.html
> > Options: http://lists.4d.com/mailman/options/4d_tech
> > Unsub:  mailto:[email protected]
> > **********************************************************************
>
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:[email protected]
> **********************************************************************




-- 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"There must be ingenuity as well as intention, strategy as well as
strength. "
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************

Reply via email to