What are your thoughts on this....

Posted on 2004-11-01
Last Modified: 2010-04-05

I wrote this app that updates the application and or data files for my main app.  I know how to handle params, but I would like to impliment a solution that leaves the end user totally out of the update.  I could make the application check for updates whenever you open it (and I may end up going down that road), but I would like to broadcast an instruction to update to all the clients.


I send a command

rcua data now

And that will tell all the clients to run rcu and update the data files immediatly.
Question by:TherosEquipment
    LVL 31

    Expert Comment

    You will need to be running your program all the time the pc is on, which will mean a Timer to trigger to look for your update.  

    Method of looking for updates: probably best to put them in a fixed location on the web, so that the program can check that site periodically.  No good though if the end user is on a dial-up connection.

    Your question implies Pushing the update to the user, but this would involve plonking an executable of some sort directly onto the user's hard drive.  Many companies security policy would baulk at this.  My feeling is that it needs to be Pulled from somewhere outside.

    The question to ask is, is there any advantage in polling for updates versus scanning for them on opening the app?  Unless you are looking at updates the size of SP2 I think the user will be patient enough to see a message "Please wait, downloading updates".
    LVL 12

    Assisted Solution

    You can have something like this on the server - INI file with the following information:

    size= 295993

    size= 295993

    [subfolder/other file]
    size= 295993

    The client take this file and read the contents, then compare the side, md5 sum and version (for EXE, DLL, etc files). If there is a difference - download the new files from the server source directory...
    LVL 5

    Expert Comment

    If you want to be able to use a program on a computer to update the program on other computers, then you will need to use some kind of server and client components. Take a look at the Indy components that are bundled with delphi, or maybe the ICS from

    This will only work however whilst the program is running and there would need to be a server that the program would connect to.

    Sorry if I've misinterpreted your question, this is just what I think you meant.
    LVL 17

    Accepted Solution

    Simple TCP/IP should be enough. The client starts and in a separate thread it sends a message to the server providing it's current version number and asking if an update is available. The thread then waits for any response. If no response or no update then the thread just dies. Otherwise, it will need to update itself.
    By doing this in a separate thread, your main application will just continue to run as normal.

    Another technique could be to have every client create a separate TCP/IP port and just keep listening to this port until a command arrives. All the server has to do is broadcast the command once the update is ready. However, this means you have to keep a connection open all the time just to listen for any commands from the server. And if you only have an update every week, I just consider this a waste of resources. But it would be okay if you update twice per hour...

    You could also use the first solution and have the client check for updates every 15 minutes and on start-up. That way you do manage to keep it as up-to-date as possible, without claiming too many resources. (You don't have to keep listening all the time.)

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    Why You Should Analyze Threat Actor TTPs

    After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

    Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
    Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
    With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…
    This video Micro Tutorial is the second in a two-part series that shows how to create and use custom scanning profiles in Nuance's PaperPort 14.5 ( But the ability to create custom scanning profiles a…

    857 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    14 Experts available now in Live!

    Get 1:1 Help Now