Most installers are native applications: they check the required .NET version is present, and if it isn't they automatically download and install it so that the target application can run.
If you are writing your own installer, you pretty much can't do it in C# - as the installer would require the correct .NET version before
it could run.
The exception to this is if you can restrict your users to particular operating systems which include a minimum .NET version and then write the installer for that version in it's properties. For example, Vista included .NET version 2 so if you target that, your installer should run on all later systems.
There is a list here:
http://blogs.msdn.com/b/astebner/archive/2007/03/14/mailbag-what-version-of-the-net-framework-is-included-in-what-version-of-the-os.aspx[
^]