[localhost:~]$ cat * > /dev/ragfield

Sunday, April 5, 2009

Horrible Visual Studio 2008 Standard Edition installer bug

I spend nearly all my time working on a Mac. Given the nature of cross-platform development I do sometimes require use of a Windows machine. Not too long ago I was upgrading to Visual Studio 2008 when I found a horrible bug in the installer.

Visual Studio 2008 Installer

I didn't want any Visual Basic or C# crap littering my machine. So I disabled those options, leaving only the C++ tools to be installed. Installation completed and I fired up the compiler only to get the following error message:

Compiling...
Project : error PRJ0003 : Error spawning 'cl.exe'.

Uh.

That's not supposed to happen.

Let's take a closer look:

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin>dir
 Volume in drive C has no label.
 Volume Serial Number is 104F-0033

 Directory of C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

04/05/2009  09:48 AM    <DIR>          .
04/05/2009  09:48 AM    <DIR>          ..
04/05/2009  09:46 AM    <DIR>          1033
04/05/2009  09:48 AM    <DIR>          amd64
11/08/2007  08:19 AM           165,376 atlprov.dll
11/08/2007  08:19 AM            77,312 bscmake.exe
11/08/2007  08:19 AM           670,192 c1.dll
11/08/2007  08:19 AM         2,334,200 c1xx.dll
11/08/2007  08:19 AM            33,784 cvtres.exe
11/08/2007  08:19 AM            17,920 dumpbin.exe
11/08/2007  08:19 AM            17,920 editbin.exe
11/08/2007  08:19 AM            17,912 lib.exe
11/08/2007  08:19 AM           790,008 link.exe
06/05/2006  06:02 PM               268 link.exe.config
11/08/2007  08:19 AM           358,384 ml.exe
11/08/2007  08:19 AM            94,200 nmake.exe
11/08/2007  08:19 AM            20,480 undname.exe
03/07/2007  03:44 PM                31 vcvars32.bat
04/05/2009  09:48 AM    <DIR>          x86_amd64
11/08/2007  08:19 AM            40,448 xdcmake.exe
06/05/2006  06:02 PM               268 xdcmake.exe.config
              16 File(s)      4,638,703 bytes
               5 Dir(s)  12,399,824,896 bytes free

So, no C++ compiler with C++ installation. Perfect.

Visual Studio 2008 Installer

On the suggestion of a coworker I also installed the C# tools. Low and behold the C# tools included the C++ compiler, and my problems went away:

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin>dir
 Volume in drive C has no label.
 Volume Serial Number is 104F-0033

 Directory of C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

04/05/2009  10:43 AM    <DIR>          .
04/05/2009  10:43 AM    <DIR>          ..
04/05/2009  09:46 AM    <DIR>          1033
04/05/2009  09:48 AM    <DIR>          amd64
11/08/2007  08:19 AM           165,376 atlprov.dll
11/08/2007  08:19 AM            77,312 bscmake.exe
11/08/2007  08:19 AM           670,192 c1.dll
11/08/2007  08:19 AM         2,334,200 c1xx.dll
11/08/2007  08:19 AM         2,356,720 c2.dll
11/08/2007  08:19 AM           125,936 cl.exe
06/05/2006  06:02 PM               268 cl.exe.config
11/08/2007  08:19 AM            33,784 cvtres.exe
11/08/2007  08:19 AM            17,920 dumpbin.exe
11/08/2007  08:19 AM            17,920 editbin.exe
11/08/2007  08:19 AM            17,912 lib.exe
11/08/2007  08:19 AM           790,008 link.exe
06/05/2006  06:02 PM               268 link.exe.config
11/08/2007  08:19 AM           358,384 ml.exe
11/08/2007  08:19 AM            94,200 nmake.exe
11/08/2007  08:19 AM            20,480 undname.exe
03/07/2007  03:44 PM                31 vcvars32.bat
04/05/2009  09:48 AM    <DIR>          x86_amd64
11/08/2007  08:19 AM            40,448 xdcmake.exe
06/05/2006  06:02 PM               268 xdcmake.exe.config
              19 File(s)      7,121,627 bytes
               5 Dir(s)  12,437,422,080 bytes free

I find it fairly shocking that this configuration was never tested before the bits left Microsoft.

4 comments:

Anonymous said...

testing??? What's that?

--Jonathan

Unknown said...

Thanx a million Rob, that horrible error cost me half a day at work! Damn Microsoft

David R. Hedges said...

Bah. This bit me, too. I will additionally note that the bin/amd64 and bin/x86_amd64 directories did contain cl.exe before installing C# (an aside: why do both of these directories exist?), just the 32-bit version in .../bin was missing. Thanks Microsoft @_@.

But a genuine thanks to you for this post!

Unknown said...

This is another indicator that Microsoft is pushing all future development to .NET managed code and the super slow MSIL approach. The key concept in MSIL being that it is an "interpretative" code. They would like to see all native code abolished.

I had a VB6 (compiled to native) application the ran really fast. When ported to VB.NET it ran so slow that it became useless. Now I am porting it to C++ MFC native. This application produces output for industrial PLC programming that can be imported to various PLC manufacturer's software that only runs on Windows PCs, so I do not need the portability to MAC or other systems that MSIL might provide. I need the speed provided by native code.

.NET has some great features, but at too high a performance price.

I wish the original IBM PC had been built on Intel's RMX-86 operating system that was already designed for multiuser/multitasking with task priority and inter-task messaging. Then the PC would have had a great OS foundation from the start and Bill Gates would be another unknown college dropout. Intel would have made the billions from the sale of software instead of Microsoft, but Intel's high paid executives did not have the foresight enormous market for personal computers and wanted thousands of dollars for the distribution of RMX-86 which made it cost prohibitive for PCs. This is another example of why top executives are not worth their overpaid salaries, bonuses, and stock options.

Sorry for the ranting, but Microsoft should never have gotten off the ground if Intel had been half-"intel"igent, and we all would have had far superior PCs today.