How can we overwrite EXE files while users are running them?

jColeson picture jColeson · Jul 29, 2010 · Viewed 7.1k times · Source

Background:

Our companies internal user's run our .Net programs on 10-20 windows terminal servers. The executables are all stored on a central file server running windows 2003. Some of the terminal servers are running windows 2003 and some are running 2008.

Issues:

When we release a new version of one of our programs we renamed the files that might be locked (EXE, DLL's, ect.), then we copy the newer version of the file to the proper location. This worked flawlessly until we started introducing windows 2008 terminal servers. Now if a user on one of the 2008 WTS is running the program, then the files are locked in such a way that they cannot even be renamed.

Questions

  • Is there a way to rename the locked file?

  • Is there a way to disable this new feature of 2008 that is locking the EXE files while they are being run?

  • Is there a better solution?

Answer

Franci Penov picture Franci Penov · Jul 29, 2010

Not really. If a file is locked, it's locked and unless the process that holds the lock releases it or the network share connection for that user is disconnected, you can't do much with the file.

You should switch to ClickOnce deployment instead of running the executables from a network share. Aside from the updating issue you describe, running from network share has implications on the code access security, and has a perf impact on the initial load of the application.