Hi all,

I saw Simon's question asking about the existence of a .NET Framework msi,
and I could not help but share one of my pet peeve's regarding the direction
Microsoft is going with their SDKs and tools.

I have the need to be able to xcopy install the Windows SDK, the .NET SDK,
and all of their tools.  Why?  For the same reason many other shops,
including Microsoft, follow this practice.

However, it seems more and more that things such as the Windows SDK and the
.NET SDK are moving away from the ability to be xcopy installed.  For the
Windows SDK, I suppose I could attempt to hack up SetEnv.cmd, etc.

I do know that the .NET Framework SDK can actually be xcopy installed.
There are some undocumented environment variables that one can define that
allow one to do such things as setup a GAC at any old place.

Consider the benefits of xcopy SDK install:

-  The tools used to build the product are checked into the source depot
along with the code so that the build tools are versioned along with the
source.  It's a concept that makes perfect sense and a concept that
Microsoft themselves follow with their internal build systems.

-  This is very important for build reproducibility reasons.  Any machine
can become a build machine by simply installing the source depot client
software, whether that's perforce, svn, etc.  In other words, the build
machine config is checked into the depot as well.

-  A corollary to the point above is that each developer's machine matches
the build machine config since the config comes from the depot.  A beautiful
system indeed. ;-)

-  If one need's to step back in time, instead of just being able to suck
code from the depot based on some label or date, one has to remember exactly
which versions of which SDKs were installed on the build machine.  And if
enough time has passed, one has to worry about whether one can even find
them easily if at all!

-  Updating the build machine can be done at any location rather than at the
build machine.  That's because the build machine's environment comes
entirely from the depot.

-  The build environment is "sandboxed" into a subdirectory that is built
from the contents of the source depot.  Therefore, the configuration outside
of the "sandbox" is irrelevant.  For example, it does not matter what
version of the same SDKs a developer may have on their machine if at all.
All that matters is what is in the sandbox.  In this scenario, a developer
would be able to build a .NET 3.5 targeted binary without ever having
installed the .NET 3.5 runtime or the .NET 3.5 SDK.

-  Build automation becomes much simpler because any tool used for the
purposes of automation can be placed into the depot and versioned along with
everything else (assuming it can be xcopy installed).

Now, **technically**, I suppose one **could** push the msi/installer
packages for these SDKs into the depot and then potentially have a checked
in script such that the build machine sucks them down and installs them
prior to building and then uninstalls them when done.  Ouch!  :-)

Look, Microsoft does this internally for many of the same reasons.  It's
just good practice.  You can find traces of this in the build environment in
the WDK.  That's because the WDK build environment and the WDK build
mechanism is essentially the same environment the OS is built with.  And
that same build environment can build managed targets by using a .NET SDK
environment that was sucked out of the source depot (that is, xcopy
installed) rather than Windows Installer installed.  They (Microsoft) should
recognize that developers other than themselves would want to do the same
thing for the same beneficial reasons.  I wish they would document the
already existing mechanism that would allow one to xcopy the SDKs and tools.

FWIW, one can do this if one is building a purely native app using the
compilers in the SDK or WDK.  The WDK is xcopy installable.  The Platform
SDK was, for the most part, xcopy installable.

Any suggestions, comments, or ideas on this matter? I've tried picking apart
the makefiles in the WDK build environment to find out how they do it, but
have not had much time to dig deeper and be successful at it.

Thanks,

   -Trey

-----------------------------------------
Author of "Accelerated C# 2008" and "Accelerated C# 2005"
http://www.amazon.com/Accelerated-C-2008-Trey-Nash/dp/1590598733

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

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

Reply via email to