Re: Technical Delphi Question (but not about coding)
- From: "Mark J. Wallin" <mjwallin@xxxxxxxxxx>
- Date: Mon, 02 May 2005 19:25:25 -0400
Marc wrote:
> Hi,
>
> This question is indeed technical, but not related to development per
> se.
>
> Every once in a while we need to update the binary at a client's
> location. Since the app is deployed on a WAN with several hundred users
> logged on, it would be somewhat difficult to have everyone log out
> during the day before we can release the new binary. Sure, we can
> always wait till some ungodly time in the wee hours to deploy, but
> sometimes a critical fix needs to be deployed quickly; the sooner the
> better.
>
> Windows 2003 Server (and others) allow users to rename a running EXE.
>
> What would be the effect of renaming a currently running EXE and
> replacing it with the newer version?
>
> How does Windows on client stations handle the fact that the PE image of
> the process in local memory has been changed from underneath it? Will
> loading/reloading of resources from the original EXE cause problems? Do
> Delphi apps manage resource loading differently than other apps? Does
> the server serving up the EXE somehow store the entire binary image on
> the server's memory?
>
> We do not use DLLs and my understanding that EXEs are not relocatable,
> so that shouldn't even factor in this scenario, right? Our only concern
> was that of the [re]loading of resources from a binary that will most
> likely have a different image size...
>
> Trying to get a feel of the whole thing,
>
> Thanks,
> M
In my current position - a small office with less than 25 users, I run a
batch file to push out updates to whatever users are connected but not
running my application. I try to keep track of who didn't get the
update and those that really need it are told to exit out while the
update is deployed (usually only a few seconds). If, however, the update
has table modifications, I have to chase everybody out at some point and
make sure every PC gets updated, during which I quickly update the table
structures.
In a previous job, what I did was deploy each update as an install
package on a common server. Each user's PC had an icon on the desktop
that pointed to the install file on the server. When the update was
deployed to the server, I sent an email to each user and let them update
the program at will. If people neglected to update, I could always
remind them to check their email. Of course this worked only if the
data structures were unaltered. In that case, I had to broadcast a
message (via Novell) to get everybody out of the system while the tables
were modified and then broadcast a message to update the application.
This had to be done pretty fast as users hate to be interrupted during
working hours. It was also important to avoid slip ups, so thorough
testing of the update is mandatory but who has time for regression
testing in a small shop?. Naturally, on several occasions I deployed an
buggy update and had to make immediate repairs or revert back to the
previous version (I always saved every version). Quite embarrassing.
It is better to do major updates after hours, but there is then the
problem that programs will not work with altered databases until they
are updated on each machine.
Mark J. Wallin
.
- References:
- Prev by Date: Re: Chalenge, prove that .NET is not useless
- Next by Date: Re: next major delphi release scheduled for 2006 ...
- Previous by thread: Re: Technical Delphi Question (but not about coding)
- Next by thread: Re: Technical Delphi Question (but not about coding)
- Index(es):
Relevant Pages
|