Hi all,

thanks a lot for the discussion so far!

When you said you didn't want to install into the GAC, I had assumed that
>you wanted to leave the assemblies on a publicly available network
drive.
>If you're going to put them on each user's C: drive, what's the advantage
>to putting it in c:\program files\whatever\ rather than in the GAC?

Well, today users can install our code on any drive they want to, i.e.
they are not bound to use the drive where the GAC happens to be located.
  This has a number of advantages:

- Users can install to a network drive which allows other
  people in the network to run the same code, without
  requiring them to install locally (except for a few
  local registry tweaks).
- Separating app code from OS components and user data
  by storing each of them on different drives makes backups
  easier.
- If the C: drive overflows, you can still choose a different
  drive which has enough space.

Call me a nitpicker, but I personally hate all those apps which push
lots of files (sometimes hundreds of megabytes) to my Windows system
directory.... probably great for the PartitionMagic folks, but it just
doesn't feel right to push half a gigabyte to the GAC. Maybe it's just me.

The other problem with the GAC is that assemblies there need to be
strong-named (AFAIK), which means that we cannot change contents of any
of the files during installation - please correct me if I'm wrong. This,
however, is required in our case since some of the config files are
updated during installation, depending on user choices and system
configuration. (Actually, sometimes users change some of those "global"
config files even after installation. Imagine teaching your end users
how to navigate to a config file using the DOS command shell in order to
bypass the SHFUSION.DLL facade.... *shudder*)

I guess we could simply exclude those config files from the assembly,
but then we couldn't use gacutil to push them to the GAC; maybe we'd
even have to copy them there "manually" during installation, i.e. we
would make assumptions about the location and structure of the GAC,
which is something we'd like to avoid.

If you put it in the GAC, you can have multiple versions installed at once.
>(Testers often think that's useful, if not a requirement for whatever
>deployment solution you come up with.)

Well, we pretty much solved the few side-by-side installation issues we
ever had, based on the conventional installation approach; therefore,
the GAC is nice to have, but not really required for us (at this point
in time). Maybe we haven't been bitten enough yet, but personally I can
live just fine with a registry-based solution such as the one used for
COM components.

But maybe there are other strategies. We could probably wrap all the
functionality which is required into a relatively small assembly and
push that to the GAC. However, this assembly (consisting of a few DLLs)
would refer to symbols in and therefore depend on other (unmanaged) DLLs
and executables which we'd like to hold in a standard installation
directory. I have no idea, however, how to make that kind of setup work.
Comments and ideas most welcome.

Again, thanks for the discussion and the insights!

Claus

[EMAIL PROTECTED]
  Claus Brod, CoCreate R&D         Have you hugged your manager today?
  CoCreate Software GmbH           Phone: +49 7031 951 2152
  http://www.cocreate.com          Fax:   +49 7031 951 6152
--http://clausbrod.com --------------------------#include <disclaimer>--

===================================
This list is hosted by DevelopMentorŪ  http://www.develop.com
Some .NET courses you may be interested in:

NEW! Guerrilla ASP.NET, 26 Jan 2004, in Los Angeles
http://www.develop.com/courses/gaspdotnetls

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to