[Python-Dev] DLL in the system directory on Windows.

Tim Peters tim_one@email.msn.com
Tue, 4 Apr 2000 01:00:55 -0400


[Guido]
> ...
> I'm waiting for Tim Peters' response in this thread -- if I recall he
> was the one who said that python1x.dll should not go into the system
> directory.

Not that I don't say a lot of dumb-ass things <wink>, but I strongly doubt I
would have said this one.  In my brief career as a Windows app provider, I
learned four things, the first three loudly gotten across by seriously
unhappy users:

1. Contra MS guidelines, dump the core DLLs in the system directory.
2. Contra MS guidelines, install the app by default in C:\name_of_app\.
3. Contra MS guidelines, put all the config options you can in a text file
       C:\name_of_app\name_of_app.ini
   instead of the registry.
4. This one was due to my boss:  Contra MS guidelines, put a copy of
   every MS system DLL you rely on under C:\name_of_app\, so you don't
   get screwed when MS introduces an incompatible DLL upgrade.

In the end, the last one is the only one I disagreed with (in recent years I
believe MS DLL upgrades have gotten much more likely to fix bugs than to
introduce incompatibilities; OTOH, from Tcl to Macsyma Pro I see 6 apps on
my home machine that use their own copy of msvcrt.dll -- /F, if you're
reading, how come the Pythonworks beta does this?).

> ...
> I've definitely heard people complain that it is evil to install
> directories in the system directory.  Seems there are different
> schools of thought...

Well, mucking with the system directories is horrid!  Nobody likes doing it.
AFAIK, though, there's really no realistic alternative.  It's the only place
you *know* will be on the PATH, and if an app embedding Python can't rely on
PATH, it will have to hardcode the Python DLL path itself.

> Another issue: MSVCRT.DLL and its friend MSVCIRT.DLL will also go into
> the system directory.  I will now be distributing with the VC++ 6.0
> servicepack 1 versions of these files.  Won't this be a problem for
> installations that already have an older version?  (Now that I think
> of it, this is another reason why I decided that at least the alpha
> release should install everything in MAINDIR -- to limit the damage.
> Any informed opinions?)

You're using a std installer, and MS has rigid rules for these DLLs that the
installer will follow by magic.  Small comfort if things break, but this one
is (IMO) worth playing along with.