Question Program to distribute MSI and install remotely

wireseverywhere

New member
Joined
Jan 22, 2009
Messages
1
Programming Experience
Beginner
Hi everyone,

I'm trying to develop an application that will simplify the deployment of software to approximately 2,000 computers (running Windows XP) in 250 sites connected by ADSL.

Basically, I've got a 25MB MSI file that I need installing on a list of computers. This is what I've achieved so far (not a lot)...

Created an app that reads an XML file containing the definition of the package that's going to be deployed, i.e. where is the MSI file located, what should the value of a given registry key be when the installation has been completed, etc. Also, the app reads another file containing the definition of the computers to which the package should be deployed.

All of the computers are domain joined and I can access their c$ shares by running the program in the context of a domain administrator.

Now, the MSI file is stored in a datacenter at present, on a file server. What I'd like to avoid is having all 2,000 computers trying to pull down that one file because it could take a while potentially.

What I'd like to be able to build, is something that...

Read the list of computers from the XML file - Done

Ping each computer - Can do

See if another computer in the same subnet has already started downloading the file remotely, i.e. from the server - I should be able to do this

If so, wait until that computer reports that it's finished the download - This should be ok, maybe...

And then, if there's another computer in the subnet which has it downloaded (local) or if no other computer in the subnet has it downloaded or has started to (remote)... copy the file from either the local or remote source to that PC.

Now, that I am struggling with.

What's the best way to transfer a file between two remote PC's?

Preferably something with some kind of status notification.

I tried using System.IO.File.Copy(local,remote) which worked, but it wouldn't be asynchronous (i.e. I couldn't go through the whole list of computers, I had to service each one, one at a time) and there's no status info... apart from, "yes it did copy" or "no, it can't".

I'd ideally like to run through a list of say 100 computers at once and say for each one:

Ok, wait for the other computer to finish, or start downloading from the other computer, or start downloading from the server.

Then be able to poll, every minute or so, and see if any of the computers need anything else doing.

Any ideas?

Cheers,

wireseverywhere.
 
Back
Top