Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 162
  • 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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
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

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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