I mean, seriously, what gives?

If you run a program needing SP1 on a machine with only the RTM redist
you get what is probably one of the dumbest, most unhelpful, stupidest
error messages imaginable. It's TOTALLY non-obvious that there's a
version mismatch; the configuration information is not incorrect, it's
just unfulfilled. depends even more helpfully suggests that the
manifest may be corrupt.

So why the hell aren't the redists on the website? The redists you
have at the moment are useless for SP1 apps; what the hell's the point
of even having them? The whole SxS is such a brain-damaged sorry-ass
system.

And how about fixing it so that the error messages aren't so totally
worthless? Was this thing put together by monkeys or something?

--

Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Eric

Eric
Thu Feb 22 09:04:03 CST 2007

> I mean, seriously, what gives?

Per Nikola Dudar (MSFT) on 12/21/2006:

"We have no plans of posting SP1 version of VCRedist for download. You
should be using version of vcredist_*.exe installed by VS2005 SP1."

From here:
http://dingo.sbs.arizona.edu/~sandiway/sicstuswindowsxp/%20VC++%202005%20redistributable%20.html

Simply brilliant.

Eric

Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Carl

Carl
Thu Feb 22 09:11:57 CST 2007

Eric Hill wrote:
>> I mean, seriously, what gives?
>
> Per Nikola Dudar (MSFT) on 12/21/2006:
>
> "We have no plans of posting SP1 version of VCRedist for download. You
> should be using version of vcredist_*.exe installed by VS2005 SP1."
>
> From here:
> http://dingo.sbs.arizona.edu/~sandiway/sicstuswindowsxp/%20VC++%202005%20redistributable%20.html
>
> Simply brilliant.

Please, correct me it I'm wrong, but AFIAK, the RTM version of the redist is
not available for download either. It's your job, as an application
developer, to include the redist in the installer for your app. You do have
an installer, don't you?

-cd



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by David

David
Thu Feb 22 09:38:12 CST 2007

Carl Daniel [VC++ MVP] wrote:

> Eric Hill wrote:
>
>>>I mean, seriously, what gives?
>>
>>Per Nikola Dudar (MSFT) on 12/21/2006:
>>
>>"We have no plans of posting SP1 version of VCRedist for download. You
>>should be using version of vcredist_*.exe installed by VS2005 SP1."
>>
>>From here:
>>http://dingo.sbs.arizona.edu/~sandiway/sicstuswindowsxp/%20VC++%202005%20redistributable%20.html
>>
>>Simply brilliant.
>
>
> Please, correct me it I'm wrong, but AFIAK, the RTM version of the redist is
> not available for download either. It's your job, as an application
> developer, to include the redist in the installer for your app. You do have
> an installer, don't you?

Carl:

I know I was hugely ridiculed the last time I suggested this (by you I
think :)), but I still fail to see why these SxS components cannot
routinely be installed by Windows Update.

If I could just say to my customers "Update your machine, and our
programs will run" then I might finally abandon static linking.
Otherwise not any time soon.

Yes, I do have an installer, but it is a very simple installer, and I
have spent zero time over the past 8 years worrying about DLL issues.

David Wilkinson


Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Eric

Eric
Thu Feb 22 09:52:10 CST 2007

> Please, correct me it I'm wrong, but AFIAK, the RTM version of the =

> redist is
> not available for download either. It's your job, as an application
> developer, to include the redist in the installer for your app. You d=
o =

> have
> an installer, don't you?

http://www.microsoft.com/downloads/details.aspx?familyid=3D32BC1BEE-A3F9=
-4C13-9C99-220B62A191EE&displaylang=3Den

It's not a question of having an installer or not. It's a question of h=
ow =

easy it is to deploy a single executable. Many of the applications I =

write are tiny one-off applications to accomplish very specific tasks =

in-house. They are deployed to no more than two or three machines, =

usually servers, manually.

I can either:

A) Create a complete installer for each release of every one of these =

applications that includes the complete SxS stuff and DLL's and all othe=
r =

associated settings that need to happen, or

B) Build an executable, copy it to the target machine, and make sure I'v=
e =

run the vcredists on the target.

It takes less time for me to just copy the executable to a target machin=
e =

and manually run the vcredists. It's just a matter of convenience to ha=
ve =

the latest redists available as a quick (2.6MB) download, rather than =

going back to a development machine and copying it to a shared folder or=
=

to a server.

Eric

Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Larry

Larry
Thu Feb 22 09:52:56 CST 2007

> If I could just say to my customers "Update your machine, and our programs
> will run" then I might finally abandon static linking.

You can. It's called a dialog box. Or a log if your app has no UI. You check
for the minimum system requirements at program start-up and take appropriate
action as req'd.



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Ben

Ben
Thu Feb 22 10:47:06 CST 2007


"Larry Smith" <no_spam@_nospam.com> wrote in message
news:%23kLzGmpVHHA.2256@TK2MSFTNGP02.phx.gbl...
>> If I could just say to my customers "Update your machine, and our
>> programs will run" then I might finally abandon static linking.
>
> You can. It's called a dialog box. Or a log if your app has no UI. You
> check for the minimum system requirements at program start-up and take
> appropriate action as req'd.

You don't get that far. When a load-time DLL isn't available, no user code
runs. Not a check for system requirements. Not a dialog box. The dynamic
linker just aborts CreateProcess.



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by David

David
Thu Feb 22 11:06:07 CST 2007

Larry Smith wrote:

>>If I could just say to my customers "Update your machine, and our programs
>>will run" then I might finally abandon static linking.
>
>
> You can. It's called a dialog box. Or a log if your app has no UI. You check
> for the minimum system requirements at program start-up and take appropriate
> action as req'd.

Larry:

Not sure I understand your answer. I meant "Use Windows Update to update
your machine and our programs will run." This would relieve me of the
responsibility of either distributing the correct DLL's, or running the
correct version of vcredist_*.exe.

I thought one of the selling points of dynamic linking was that security
problems in VC DLL's could be fixed by Windows Update. If this is
possible, why can't these DLL's be updated routinely? IMHO this would be
a good use (justification even) for SxS. As it is, it's a PITA.

David Wilkinson



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Larry

Larry
Thu Feb 22 11:15:44 CST 2007

> You don't get that far. When a load-time DLL isn't available, no user
> code runs. Not a check for system requirements. Not a dialog box. The
> dynamic linker just aborts CreateProcess.

In practice, compatibility problems don't occur that early for most apps.
You can usually launch a message beforehand. If not (say, for an implicitly
loaded DLL that's either missing or might crash at start-up) you can always
get around it with a small launcher for instance (which checks the minimum
requirements and the launches the main app). There is almost never a need
for a program to crash at start-up however because of this issue (with some
cryptic message that makes your organization look like it's operating out of
the back of a truck)



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Larry

Larry
Thu Feb 22 11:21:31 CST 2007

> Not sure I understand your answer. I meant "Use Windows Update to update
> your machine and our programs will run." This would relieve me of the
> responsibility of either distributing the correct DLL's, or running the
> correct version of vcredist_*.exe.
>
> I thought one of the selling points of dynamic linking was that security
> problems in VC DLL's could be fixed by Windows Update. If this is
> possible, why can't these DLL's be updated routinely? IMHO this would be a
> good use (justification even) for SxS. As it is, it's a PITA.

The issue IMO is that your app shouldn't crash at start-up because it
requires some SP that's not installed (or other system requirement). Just
check for it and alert your users accordingly if not found (and gracefully
exit). See "VerifyVersionInfo()".



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Ben

Ben
Thu Feb 22 13:23:08 CST 2007


"Larry Smith" <no_spam@_nospam.com> wrote in message
news:%23tt%23XUqVHHA.5068@TK2MSFTNGP03.phx.gbl...
>> You don't get that far. When a load-time DLL isn't available, no user
>> code runs. Not a check for system requirements. Not a dialog box. The
>> dynamic linker just aborts CreateProcess.
>
> In practice, compatibility problems don't occur that early for most apps.

This is vcredist we're discussing, i.e. the C runtime library. Since the
CRT contains the function that calls main or WinMain, I'd say it's "that
early". But since the compiler doesn't mark that DLL as delay-load, it
doesn't matter, the OS performs the check and will fail process startup
before any code executes in the context of the new process.

> You can usually launch a message beforehand. If not (say, for an
> implicitly loaded DLL that's either missing or might crash at start-up)
> you can always get around it with a small launcher for instance (which
> checks the minimum requirements and the launches the main app). There is
> almost never a need for a program to crash at start-up however because of
> this issue (with some cryptic message that makes your organization look
> like it's operating out of the back of a truck)

The launcher is a good idea, if only because you're guaranteed that whatever
resources it uses are released and don't become part of your working set.
But it must be linked statically to avoid incurring the same problem itself,
which means that it should be very minimal, because every CRT function it
uses is (1) stored an extra time in your launcher exe, increasing the size
of the download and (2) forever locked in at the version you compiled with,
losing any chance of having a bugfix deployed through Windows Update.



Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Dr

Dr
Thu Feb 22 13:58:47 CST 2007

Carl Daniel [VC++ MVP] wrote:

> Eric Hill wrote:
> > > I mean, seriously, what gives?
> >
> > Per Nikola Dudar (MSFT) on 12/21/2006:
> >
> > "We have no plans of posting SP1 version of VCRedist for download.
> > You should be using version of vcredist_*.exe installed by VS2005
> > SP1."
> >
> > From here:
> > http://dingo.sbs.arizona.edu/~sandiway/sicstuswindowsxp/%20VC++%2020
> > 05%20redistributable%20.html
> >
> > Simply brilliant.
>
> Please, correct me it I'm wrong, but AFIAK, the RTM version of the
> redist is not available for download either.
Course it is, has been for ages.

> It's your job, as an
> application developer, to include the redist in the installer for
> your app. You do have an installer, don't you?
Of course I don't. What's the bloody use of all this "xcopy deploy"
crap if I have to have a frigging installer? I don't want an
installer. My users don't want an installer. I want someone to be
able to download and install the redist--once--and subsequently be able
to use the applications without a second thought.

Particularly as I have no control at all over the stupid dialogue box
with its cryptic and totally unhelpful error message.

--


Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Dr

Dr
Thu Feb 22 14:01:27 CST 2007

Larry Smith wrote:

> > If I could just say to my customers "Update your machine, and our
> > programs will run" then I might finally abandon static linking.
>
> You can. It's called a dialog box. Or a log if your app has no UI.
> You check for the minimum system requirements at program start-up and
> take appropriate action as req'd.
You can't. Try it.. Try running an app linked against 2005 SP1 on a
machine without the runtime. The error message is out of my control,
it's emitted by the SxS mechanism (or perhaps some stub in the
executable, who the hell knows, really). There is no opportunity to
say "oh dear, it looks like you haven't installed X". You just get a
message to say that the application is screwed up and may need
reinstalling.


--


Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Dr

Dr
Thu Feb 22 14:03:02 CST 2007

Larry Smith wrote:

> > Not sure I understand your answer. I meant "Use Windows Update to
> > update your machine and our programs will run." This would relieve
> > me of the responsibility of either distributing the correct DLL's,
> > or running the correct version of vcredist_*.exe.
> >
> > I thought one of the selling points of dynamic linking was that
> > security problems in VC DLL's could be fixed by Windows Update. If
> > this is possible, why can't these DLL's be updated routinely? IMHO
> > this would be a good use (justification even) for SxS. As it is,
> > it's a PITA.
>
> The issue IMO is that your app shouldn't crash at start-up because it
> requires some SP that's not installed (or other system requirement).
> Just check for it and alert your users accordingly if not found (and
> gracefully exit). See "VerifyVersionInfo()".

The only way I can do that is to static link (because this error occurs
before any of my code gets a chance to run), and if I have to static
link what's the point of the DLLs at all? Duh.

--


Re: Why on earth are there no VC++ 2005 SP1 redists on downloads.microsoft.com? by Ben

Ben
Thu Feb 22 18:20:30 CST 2007


> Of course I don't. What's the bloody use of all this "xcopy deploy"
> crap if I have to have a frigging installer? I don't want an
> installer. My users don't want an installer. I want someone to be
> able to download and install the redist--once--and subsequently be able
> to use the applications without a second thought.
>
> Particularly as I have no control at all over the stupid dialogue box
> with its cryptic and totally unhelpful error message.

Just goes to show that manifests are very badly implemented. They should
have a CODEBASE setting or similar, so that the user can be redirected to
the vendor website to get the missing component (signed by MS or vendor),
just like when you reach web content for which you have no plugin/viewer.