5

Currently we deploy one of our applications to every individual user's PC. However, all our users have access to the same intranet. I'm wondering what is stopping us from just putting the binaries on a network file share and letting multiple users run it from there. So my question is: Are there any gotchas with multiple users accessing the same exe/dlls? And are there any gothas with applications running from a file share?

Some detail that may be relevant:

  1. In essence, I want to get away from updating every individual's PC (100+) when a new version of our app comes out (which happens quite often)

  2. We will still run an initial setup to get the footprint (data, registry entries, etc) on every user's PC

  3. The main app is written in Delphi, some dll's using .NET v4

  4. I did get some info here on .NET apps, so no need to repeat that

Community
  • 1
  • 1
Jaco Briers
  • 1,703
  • 1
  • 21
  • 34

3 Answers3

6

I think that another approach would be to mantain an updated version of the program executables and DLLs on the server, and the PC clients execute a program (or a .bat) that will compare the versions (or modified date), and if they are different, it will copy the file to the local PC and execute it.

I worked in one company that used a .bat file to do this, and where I actually work, we do this using an .exe file (which is rarely updated).

It will decrease the network overhead generated by copying the executables every time an user executes the application.

Note: Sorry if my English sounds weird... English is not my native language, so maybe some phrases could sound strangely.

Augusto
  • 71
  • 2
4

I do the same for my application. You have to take care of the following:

  • Provide an easy way of upgrading your application. If all your versions have the same executable name, you could be forced to tell all users to leave the application before it can be upgraded. If you include the version name in the executable name, putting a new version on the file share is just a matter of copying the file, and maybe adjusting a command file so the new version is executed the next time.
  • Link your application with the /SWAPRUN:NET flag. This makes sure the application is loaded fully in memory at startup. If you don't use this flag, and the network connection is dropped while users are executing your application, the application might crash if the user executes part of the application that he hasn't executed before (because it was not loaded from the network yet).
Patrick
  • 23,217
  • 12
  • 67
  • 130
  • SWAPRUN is useful if the application does not have any other dependencies. Is there a way to run this with dependencies? – Magic Mick May 03 '17 at 05:16
  • Since Windows Vista the use of /SWAPRUN:NET is discouraged (by me :-)). This is because this flag is now also used by Windows Explorer to completely load the executable file over the network, even if only the icon needs to be shown. Result is that a folder with hundreds of large executables, all linked with /SWAPRUN:NET causes a huge network overhead, and your Windows Explorer window is only slowly filled. I now suggest to copy the executable/DLL's to your local drive, as suggested by Augusto. – Patrick May 17 '17 at 12:19
0

I realize this is old, but to add to @Augusto suggestion. Since you are using Delphi you could easily create a self updating desktop install with a control like TWebUpdateWizard from tmssoftware.com. It can easily be configured to pull it's updates from your LAN instead of the web and it can update other files in addition to the .exe while it's processing (such as .ini or .dll).

Tony
  • 818
  • 1
  • 7
  • 21