Mark said:
Why don't you include with the installer, a routine that checks the host
computer for the .net Framework? If the Framework is not found, the installer
should prompt the user to install .net Framework first. This should cover
everybody whether they have the Framework or not.
Plus it lets the user have the choice up front as to whether or not they
want to install an applications that depends on .Net libraries. Not all
users want that extra layer between the app and the system API, especially
since the resolution of some problems requires uninstalling all versions
(base, service packs, and updates) of .Net, possibly having to use a cleanup
utility (like from Aaron Stebner), and then reinstalling them.
..Net makes it easier for you to code. Because of the reliance on .Net
libraries, there is something to be said for reduced reliability. .NET
programs run in a software environment that manages the program's runtime
requirements. More layers, less reliability. Programmers like the
framework. Users aren't so sure and really don't care if you used C## with
..Net or wrote in compact assembly code (or just old C).
It also means that those users will never see a *NIX version of your
program. Or am I wrong that there is code portability between Windows apps
using .Net to those same apps running on Linux, AIX, HP-UX, Solaris, etc?
You may only care to produce a Windows-only application. Although growing
very slowly, there is an ever-increasing number of users that have chosen to
keep their money and go with some flavor of a *NIX operating system. I use
Windows on my workstation and at home but still have to use almost a dozen
different flavors of *NIX at work. I suspect that anything based on .Net
won't be showing up on non-Windows platforms. That is, there is not
cross-platform portability of code for .Net applications. Microsoft is
getting programmers to lock in on just their Windows platform. Well, .Net
is supposed to be platform agnostic but is it? Has any non-Windows platform
yet written the CLR (command language runtime) libraries needed to run a
..Net application on a *NIX platform? Doable doesn't mean done.
I have no idea what it is that your unidentified application does that
targets just Windows users. However, if it was a common task that is
performed on both Windows, Mac (with OS 10), and Linux then a user might be
looking for a product that has code branches for each of their employed
platforms, not just one of them, like Windows only. Of course, maybe
whatever this Windows-only app performs can only be applied to Windows
(which means it is likely some type of tweaker or config utility for Windows
itself rather than a user-side task, like word processing).
If your app cannot be used except under Windows, and if you detect and
announce the need for .Net at the start of your install (which means you
have to carry along the .Net installation package), then I don't that you
even care whether the potential customer has .Net installed or not. If they
do, your install skips that step and just installs your product. If they
don't, and assuming they're willing to accept the .Net install, your install
gets longer by having to do the user-authorized .Net install followed by
your product's install.
As to what percentage of user's have .Net already installed (but which you
never mentioned WHICH version of .Net), I don't think anyone can give you
that statistic. No version of .Net was pre-installed in Windows XP or prior
non-server versions of Windows. Windows Vista included .Net v3.0. .Net 3.5
is included in Windows 7 (.Net 4 will come out too late). So whether some
version (which may not be what you need) of .Net is already included in a
Windows install depends on what version of Windows you are targeting. The
default install of .Net for each Windows version (and for Visual Studio but
not something considered when discussing *users* of the OS) is shown in a
table at:
http://en.wikipedia.org/wiki/.NET_Framework#Versions