Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 165
  • Last Modified:

Shutting down a network application...

This question is worth 0 points because I have no points to give right now.  If you are feeling charitable, by all means continue reading.  I leave the decision to you.

I have an application I wrote that resides on a network drive.  One big problem is whenever I want to update the .exe I have to wait until everyone has exited out of the program, because I can't replace the .exe when it is in use.

What I want to do is figure out a graceful way to exit the application, giving those who are actively using the program enough time to finish what they are doing and exit before the program dies.

I want to create the ability to "down" the program by some means.  My thought right now is to set up a TTimer event that checks for the existence of a file every so often.  Let's say the file is called KILLME.TXT.  The code would look something like this:

procedure TFormMain.Timer1Timer(Sender: TObject);
begin
  if FileExists('KILLME.TXT')then
     Application.Terminate;
end;

Now, this method is not smart because other dialogs may be open at the time or the user may be in the middle of something.

Any ideas?
0
Tom Knowlton
Asked:
Tom Knowlton
  • 3
  • 3
  • 2
  • +1
1 Solution
 
EpsylonCommented:
Use some kinda spawner. An app that starts the main app. The spawner app checks a file which version of the main app should be run.
0
 
Tom KnowltonWeb developerAuthor Commented:
Okay, this works for people trying to run the application, but what about if it is already running before I change the "valid" version number?
0
 
intheCommented:
maybe
if FileExists('KILLME.TXT')then
showmessage('this app is shutting down for upgrade in 5 mins,please save and close what you are doing and go get a coffee');
start a new timer for 5 mins
timer1.enabled := false;
timer2.enabled:= true;
then on
timer2.ontimer event afre the 5 mins
     Application.Terminate;
end;

i would do somethign like this in conjunction with what epsylon said about having a file version to check on start also..
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
EpsylonCommented:
0
 
nricoCommented:
I think inthe's answer is indeed the best solution.
However, the program could save all data to disk itself (Let's say to \WINDOWS\TEMP\UPDATESAVE), set a registry setting that it's being updated and close down. It then spawns a program that keeps checking for the file UPDATECOMPLETE.TXT, and launches the program once it finds it there.

When the program is booted, it checks for the registry setting that it has been updated, removes it and loads all data back from \WINDOWS\TEMP\UPDATESAVE.

Of course, these things are all accompanied by nice messages telling the user what's happening -- I know I wouldn't like it if my program terminated on me without me knowing what happened!
0
 
nricoCommented:
Ummm... You understand that the application launches a waiting program *BEFORE* it closes down... ? :-)
Sorry...
0
 
nricoCommented:
Hey, you should have 15 points again by now!!
0
 
Tom KnowltonWeb developerAuthor Commented:
Adjusted points from 0 to 20
0
 
Tom KnowltonWeb developerAuthor Commented:
Increasing points to 20 now.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 3
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now