|
The update logic for checking, downloading, and replacing is built into the applications. Here's how I've done it for the last 18 years:
0: Right after login the program loads a web-based xml resource containing the version and date of the last advertised update.
1: The advertised version and date are compared to the current app.
2: If the current version or date is less than the advertised version, the customer is directed to a screen that uses another xml resource to give the user detailed information about all available updates for the software.
3: If the customer is not scared, and willing to take their chances, they just need to click a button to start the process which really just downloads a zip file, then processes the contents. (full compare/replace on all files but the core executable which requires a rename/replace in order to update itself)
Of course, it goes without saying that if you ever introduced a bug in the update routines, you're kinda screwed ...that's why I also have a stand-alone updater for each application.
I have noticed an uptick of overly aggressive AV products being used by some of my more uptight security conscience customers, Avast being the absolute worst as far as throwing a wrench in the update procedures. (solved by getting IT to disable it temporarily)
"Go forth into the source" - Neal Morse
|
|
|
|
|
Our application is multi layer - multi tier, installed/updated by home made software...
But we actually run one instance, that reads the system configuration file and update all the servers remotely (web, print, db, application, external connections and more)...
Clients update them self based on server flag upon next login...
Skipper: We'll fix it.
Alex: Fix it? How you gonna fix this?
Skipper: Grit, spit and a whole lotta duct tape.
|
|
|
|
|
Works perfectly for us. Change the config, hit publish on the wcf and then the client, check it in, all done.
We have something like 20+ apps all written in WPF (some are still in silverlight) all deployed via clickonce.
TFS on the other hand is a stone bitch to manage!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Great for support and reduction of app version fragmentation
Graeme
|
|
|
|
|
At the moment I am writing a web updater in C#, using .NET 3.0 as this must run on older computers too.
The program to be installed is a .NET 4.7 application. The updater uses a Webservice and HTTP Webserver for updating. If I find the time maybe I will write an article about it
|
|
|
|
|
RickZeeland wrote: using .NET 3.0 as this must run on older computers too.
RickZeeland wrote: The program to be installed is a .NET 4.7 application.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Confused ? I will explain: the application to be installed is a .NET 4.7 application, but on older computer .NET 4 is probably not present, so if I would write the updater app in 4.7 it would not run.
So the updater is in .NET 3.0 and installs .NET 4.7 using the webinstaller link before installing the application.
However there was a flaw in my assumption that on newer Windows versions like Windows 10, .NET 3.0 would be present. Microsoft has broken with the tradition that older .NET framework are present when a newer one is installed.
So now I'm forced to do the first part of the updater in Inno Setup, which takes care of installing the .NET 4.7 framework and other pre-requisites.
Hope this clears things up a little
|
|
|
|
|
Thank you. I feel better now.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Ya know, relive the Classic days of app updates.
|
|
|
|
|
|
Some of the updates can be just copying the new application over the old one.
Sometimes there are support libraries that need installed or updated, so Inno Setup is used.
Generally, database schema updates are handled within the application.
|
|
|
|
|
I give the customer an installer and if needed a DB update script. How they deploy it to their systems is up to them. I think they remote into the machines it's installed and run them manually; but Not My Circus, Not My Monkeys.
If at some point they decide to pay for an auto-updater the above may change.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
--Zachris Topelius
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
|
|
|
|
|
as not to awaken the voodoo spirits or their hamsters.
Just saying...
|
|
|
|
|
I prefer to cry havoc, and let slip the dogs of war.
cheers
Chris Maunder
|
|
|
|
|
That will work too.
|
|
|
|
|
Hi guys,
I'm using Visual Studio MobileCenter to distribute my apps. It is very easy-to-use.
|
|
|
|
|
Since they all run on VM's I need to get it to the server jocks who update 'the Golden Image' which place/updates/deletes it from all users' desks.
Before the VM, all my .exe's ran through my own interface which, through feature creep, could do essentially anything to the application. Things were much better, then.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
The programs I make are installed on physical machines that are on production at who knows which place.
In case something goes wrong we can connect remotely and apply patches or going there and do the same.
|
|
|
|
|
On the current project I am working on:
Our units have external flash memory which is divided into 'hardware address locations'. Depending on where you plug the unit into on a network bus, it loads the specific application appropriate for that location on the bus from external flash to internal flash and the application starts up.
We first and foremost load a bootloader onto the units. With this bootloader we load a maintenance application onto the units. With this maintenance application we load all the software applications to the external flash hardware locations. The bootloader then loads the appropriate application depending on where the unit is plugged into.
|
|
|
|
|
It's not even a word, just a grunt, and I always thought that we should use real words. When you use grunts, yo could end up writing whatever you want to say sounds like, and not what you really mean:
Quote: The user can't update the up: we update it for them
People have been upgrading and upvoting the up ever since Newton invented gravity. Before that, downvoting and downgrading the down got them nowhere, also known as the down symdrome. Depressing.
Does anyone already feel motion sickness after all this up and down?
I need a perfect, to the point answer as I am not aware of this.
Please don't reply explaining what method overloading is
|
|
|
|
|
I email a ZIP file to the other developers on the team with my latest tools and utilities.
|
|
|
|