From: David Ching on
"Tom Serface" <tom(a)camaswood.com> wrote in message
news:#h4oNDJ$KHA.5848(a)TK2MSFTNGP06.phx.gbl...
> I usually just open the EXE using Notepad to check the manifest
> information (text) that is buried in there. I wish the OS was smart
> enough to display a decent error message when the versions were wrong.
>

SxSTrace.exe (in Vista and later) is really good. It tells you exactly what
version of the DLL was expected and which was found. It is a little tedious
to use, and of course it does no good on customers machines or on XP, but
still .....

-- David

From: Liviu on
"David Ching" <dc(a)remove-this.dcsoft.com> wrote...
> "Liviu" <lab2k1(a)gmail.c0m> wrote...
>
>> I'll disagree with the "less control" part, on grounds that DLL hell
>> will at least start the app (except for borderline exotic cases),
>> thus giving it a chance to check the versions of the loaded modules
>> and decide on the appropriate course of action in case of mismatches,
>> be that a warning, auto-repair, or immediate shutdown. The manifest
>> hell on the other hand always chooses the latter with no recourse.
>
> Isn't that the purpose of the manifest? To specify exactly which DLL
> versions are required and fail if they are not there?

Right, and that was my very point. Failing "if they are not there" is an
unconditional decision forced upon by the "manifest hell", while the
"dll hell" allows the application some latitude as to how to proceed
(in most common cases, not counting "borderline exotic" ones such
as missing exports which prevent the PE from being launched at all).

> I've never heard of anyone doing a version check from within their
> app once it was started up. I can't believe anyone would ever do that.

On the offchance that someone had to actually do that ;-) for whatever
good reasons, it's a valid, legit technique as far as all the docs go.

Liviu


From: David Lowndes on
>I usually just open the EXE using Notepad to check the manifest information
>(text) that is buried in there. I wish the OS was smart enough to display a
>decent error message when the versions were wrong.

I agree, I think the lack of easily understandable messages and *good*
accessible documentation for manifest issues were the root problem
with it.

Dave
From: David Lowndes on
>Frankly, I don't think they trusted even themselves to do the right
>thing, so they disabled the manifests.

Sounds like they made a good decision in that light :)

Dave
From: David Webber on
I'll jump in here at random.

1. First - sorry for starting such a furore - I have quite a few DLLs which
use MFC and CRT DLLs, so I just wanted to be sure before removing all the
manifest files and taking the lines out of my rc files.

2. With "DLL Hell", I never understood what anyone was talking about. I
just put the MFC and CRT DLLs in my program directory since the first MFC
version of my program released in 1996. Never had any problems at all
until VS 2008 and manifests. Never. And I have never caused DLL Hell for
anyone else by replacing someone's versions of MFC etc with the ones I am
supplying.

3. I too put out service releases of my software, and I can replace the MFC
and CRT libraries easily enough if service releases of those have come out.

4. I agree that lack of good documentation of manifests was a major problem.
Having to rely on the existence of Jochen Kalmbach's Blog (and find out
about it) to find out how to put the dLL's in ones program's directory just
points to how pathetic Microsoft's documentation is (but a real service to
the world - thanks Jochen).

5. With VS 2008, I didn't want to use the Microsoft redistribution SxS
installer, because my software ran on Windows 98, and I couldn't find any
documentation about whether the Microsoft installer worked on Win 98 (an
operating system they explicitly didn't support) and if it did, where it put
things. I have always been particular about NOT replacing people's system
DLLs in the Windows or System directories - see (2). So it was a real
problem for me until I discovered (4).

6. Hard disk real estate is dirt cheap. There is no reason at all thee
days NOT to put MFC etc in one's own directory.

7. Looking through the VS 2010 help (and I'm not sure I like the format but
it's early days yet) I did find something which indicated one could put the
MFC DLL in one's own directory, and there was no mention of needing a
manifest. But I didn't find a parenthetic admission in capital letters
that IN VISUAL STUDIO 2008 YOU NEEDED A MANIFEST WHICH WE DIDN'T TELL YOU
HOW TO WRITE BUT WE SCREWED UP AND ARE VERY SORRY SO NOW YOU CAN DO IT
WITHOUT A MANIFEST. Had that been there, I wouldn't have felt the need to
ask for reassurance here :-)

8. Anyway thanks for a lot of good points on this thread: but I am resolved
to do it my own atavistic way and put MFC and CRT in my program's own
directory, as that way I understand what I'm doing, and it definitely can't
interfere with anything else on anyone's machine (which makes me feel
comfortable). After VS 2008 it feels suspiciously easy in VS 2010. All
looks clear but I feel there are bad guys hiding behind the rocks ready to
ambush me. We'll see :-)

Dave

--
David Webber
Mozart Music Software
http://www.mozart.co.uk
For discussion and support see
http://www.mozart.co.uk/mozartists/mailinglist.htm