0

I've written a client-server application. There is one computer running the server application, and several computers running the client application.

So far, every time I had a new version / patch of my application, I copied the binaries first through VNC to the server application, and then start a script, that performs a script on client-side, that is copying the binaries to a local folder (network execution is not working!)... Then the client application is started on every client computer...

So what are good opportunities that can replace my old-style method?

I tried creating a click-once application that is updating over http/ftp... but without success ^^

Matthias
  • 15,919
  • 5
  • 39
  • 84
  • I used open source software deployment. I recommend to use the wpkg.. http://wpkg.org/. it is easy to use. It is implemented using javascript and xml. – John Rey Flores Jun 14 '12 at 19:05
  • _I tried creating a click-once application that is updating over http/ftp... but without success_ - Can you be more specific? I've used Click Once over http many times. – jrummell Jun 14 '12 at 19:53

3 Answers3

4

We use an open source app called Presto: http://presto.codeplex.com/

After doing the initial setup, there are only two manual steps with each deployment:
1. Copy the binaries to a network location
2. Press the button in Presto to initiate a new deployment

The big win with Presto is that you use it to initially set up your apps and servers, and specify the appropriate config settings for each environment. Once you initiate a deployment, the installation happens automatically, and the correct values are written to the config files (QA gets QA values, production gets production values, etc...).

With Presto, you can stop services, delete folders, copy new binaries, update config files, etc... and it's all automated.

Bob Horn
  • 33,387
  • 34
  • 113
  • 219
1

That's why web front-end is so popular :)

Try to implement good auto-update mechanism and versioning. Client has hard coded server version, with first call all with each call server includes own version. When version mismatch - time to auto update. On server - it's just endpoint to download client application installation, which is standard across versions.

So client has external updater process, that is initiated after client knows that new version exists. Goal of updater process is to download new installation/package and that either to run installation that will update/re-install client either unpack and copy new/modified files.

When not using some external libraries. Process looks like this.

Click-once is another approach and also should work.

Similr question is here

Auto update .NET applications

Anyway probably your client apps need a good installer. When you have installer just left to implement simple downloader/updater and versioning on service.

Community
  • 1
  • 1
Regfor
  • 8,515
  • 1
  • 38
  • 51
0

It is not that hard to do this with less code.

  1. Set up a http service in your application.
  2. Create a File where the current version is listed.
  3. Set up a ftp service in your application to provide the new binaries.
  4. Add a Updater.exe application to the client, this will check for new updates via http and download the new version via ftp. Also a client version file should be made.

So you just have to do your old-style method just one more time and you are done! Now I don't know if the client application can run the server, if that case is so, I would advice to seperate the services (http, ftp) from your server app.

Noli
  • 604
  • 2
  • 10
  • 27