This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mismatched dll


Peter Rehley wrote:

> Can we get this added to the faq?  It sounds like there are several
> companies out there that install the cygwin1.dll without caring that
> it can cause problems.  This would at least provide some information
> for those that read the faq.

I think regardless of what the FAQ says there will still be 3PPs that
don't follow its advice, and instead supply their own cygwin1.dll
regardless of the state of the machine.

>From the perspective of the software vendor that is selling a product
(or otherwise has some vested interest in having their software work)
there are a few problems with the procedure in my last post.

For example, suppose that the user installs Cygwin and then later
installs CygwinBasedCommercialProduct (CBCP from here on.)  The CBCP
installer plays nice, notices that the user has Cygwin installed with
the most recent DLL, so it does not install its own copy.  Everyone is
happy.  But then say six months later the under removes Cygwin, unaware
the CBCP was relying on its DLL, and now CBCP fails to start or fails in
other strange ways.  From the standpoint of the user, he doesn't really
care what the underlying reason is, his CBCP now doesn't work and it's
obviously a CBCP bug.  You can repeat this scenario in several
permutations, say for example if there are two CBCPs installed on the
system, and one is using the DLL provided by the other. 
Upgrade/downgrade/remove one and the other breaks.

There's also the scary notion of an installer potentially messing with
files from a software package it does not "own."  In order for the "one
Cygwin DLL" plan to work in the face of 3PPs and CBCPs you have to be
prepared to accept that at some point you might have to delete or
overwrite the .dll shipped with the product, if it's older than what is
current or what you are shipping.  Here again your options are to either
play nice, and try to inform/educate the user that you're about to go
messing with some other software's files, potentially something
completely unrelated to yours, all because their DLL is too old but it
was there first.  Or you can just trudge ahead and be a quinessential
3PP and have no regard for what might have been installed already -- of
course you also don't have to shoulder the burden of possibly FUBARing
some existing software because you messed with its DLL.

And then on top of all this there is the "stability" argument, where you
have 3PPs that (for better or worse) only care about trying to support
their CBCP with a certain known version of the cygwin DLL.  If you have
other cygwin.dll-consumers on your system and try to "do the right
thing" by keeping the sole copy as the latest version, you risk losing
support from the stubborn 3PP that will not budge on the fact that
you're doing something they don't want to have any part of.

So, I guess all I'm saying is it's a complicated issue and there is no
100% foolproof way to go if you want to be a provider of Cygwin-based
software that is meant to interact with other Cygwin-based software --
other than perhaps introducing your software as an official package, or
telling users to install Cygwin from the cygwin.com mirrors first and
then integrating with that.  But for some vendors that is too many steps
and not "turnkey" enough.

I think at the end of the day, user education as to the nature of the
problem is really what is required.

Brian

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]