What is the best way to update a file on customers' computers (or servers)?

We have proprietary software that expires periodically.  Most of our customers get software renewals once per year,  but there are some that receive shorter renewals.  Currently when it is time to renew the "key" we distribute it via email or ftp to each customer (~100k file, in self-extracting ZIP, with instructions for placement on their server; all users must be logged out of our software to overwrite file).

We have considered a couple different ways to automate the renewal process.  I am trying to find the BEST way.  Our software may be installed on a Windows server, on the user's local drive (less common; if there is only user in the office) or on a Terminal Server (in a few cases).  We determine the location of the software from the INI file on the user's workstation.  

I'm looking for an ideal solution to this, that will work for ALL environments.  Should users log on to our web server and have it somehow check to see if it needs a renewal, and then install the correct one?  If so, how would that work?  Or is there a program that should be installed on a user's workstation (similar to Windows Update) that should log on to an FTP at regularly scheduled intervals, to check for updates?  

I need whatever solution we have to fully work in all situations, including T.S., and properly update / replace the renewal file.
Who is Participating?
nealerocksConnect With a Mentor Commented:
You could assign the update in Active Directory. This would give all users access to it. It would not matter if they were working on local workstations or Terminal Servers.

This link provides some information on assigning apps through Active Directory:


aaepaAuthor Commented:
I'm not sure if this would work for clients that are in different companies, though.    Our customers are in different law firms all over the country, which is why we need to find a solution that fits all.  
They do not all log on to a common server because they are not linked in any way to each other.  We are a Membership-based organization, and our customers are "Members" of our organization.  They use our software, which is installed on their computers (typically on their Windows server, occasionally on a Term. Svr in their office, and occasionally on a workstation on their office if there is only one user).  
Well you could deploy the software to each server, or use management software like Kaseya to manage all your clients. (Quite expensive though) But if you have varying clients of different sizes all over the place then you probably can't have one centralized was of pushing out these updates. FTP or email might be the best bet.
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

KorbusConnect With a Mentor Commented:
how about this method

Create an https site for your companies distribution server.
  on this https server, create a folder for each of your clients, with indicidual authentication
Create a script/program on your clients server.
This script/program will get the new file via https.   You will need to modify each client's script differently (https path. username, password)- or have that info in a seperate file on the client's server.  Once it has the update, the script can overwrite the old file by looking at the .ini file, which should be stored on the same computer as this script/program.
Schedule the script for whenever using windows schduler.

You can put whatever file you want in that clients update path, or none if they dont renew.

aaepaAuthor Commented:
This seems like a lot of work and it would be almost as time-consuming as what we are doing manually.    We would need to keep track of each office that downloads their files so that we are absolutely certain all offices get renewed.  If their software expires, it is very bad for them and we need to "fix" their database, which causes downtime for them and additional support requests for us.  
ALL: we have a total of of approximately 110 "Member" offices, each with unique logins to the web server.  
Vadim RappConnect With a Mentor Commented:
Write server application that will be generating the key online. When client application has two weeks (for example; can be any other interval) until expiration, it tries to log on to the centralized server (yes, one centralized server just for this purpose - independent of the member services. Currently, you do do it in centralized manner, don't you, so it's the same way, only done by the computer). It authenticates, then server application generates the key file and it gets downloaded. You probably already have some application that generates these key files anyway, so you just need to put it on the server.

Server application will also allow for easy tracking who has downloaded the file and who did not.

If client application fails to download new key file, it issues warning to the user, who then must call support and obtain the file in some alternative way.
Vadim RappCommented:
delete, no refund. We made suggestions, but he already had his own, and was looking for the best one.
aaepaAuthor Commented:
This wasn't quite what I was looking for but did help.  Thak you.
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.

All Courses

From novice to tech pro — start learning today.