MSDN installer maestro Aaron Stebner used the following code (unmanaged) to detect framework versions. I adapted it to try and do framework checks, but then discovered since I'd taken a dependency on MSCOREE elsewhere in my C++ it was pointless anyway, as my code blew up before I got to do my check. Still, you might find it useful.
http://blogs.msdn.com/b/astebner/archive/2009/06/16/9763379.aspx Joseph On Thu, Jun 16, 2011 at 11:15 PM, Matt Siebert <mlsieb...@gmail.com> wrote: > I had to make my bootstrapper (dotNetInstaller) detect .NET 4. At the > time, the best advice I could find was to use the registry keys mentioned in > that SO post. This has been working reliably for some time. > > If you're using WiX you can use the WixNetFxExtension and add PropertyRefs > for the specific versions and SPs you require... > > <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" > xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension" > xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> > > <!-- ... --> > > <PropertyRef Id="NETFRAMEWORK35" /> <PropertyRef > Id="NETFRAMEWORK40FULL" /> > > <!-- ... --> > > > > > On Thu, Jun 16, 2011 at 9:26 PM, Ian Thomas <il.tho...@iinet.net.au>wrote: > >> Wal –that’s good, but iirc tuples require 4.0 >> >> >> ------------------------------ >> >> Ian Thomas >> Victoria Park, Western Australia >> ------------------------------ >> >> *From:* ozdotnet-boun...@ozdotnet.com [mailto: >> ozdotnet-boun...@ozdotnet.com] *On Behalf Of *Wallace Turner >> *Sent:* Thursday, June 16, 2011 6:47 PM >> >> *To:* ozDotNet >> *Subject:* Re: Installed CLR versions >> >> >> >> Hi Ian, I need to test the client has the correct framework installed. I >> use something like this: (turn heads Tuple-haters) >> >> >> public static >> >> bool HasDotNetFrameworkMatching(decimal targetVersion, inttargetServicePack >> ) >> >> { >> >> foreach (Tuple<decimal, int> version in GetNETFrameworks()) >> >> { >> >> decimal framework = version.First; >> >> decimal servicePack = version.Second; >> >> if (framework == targetVersion && servicePack == >> targetServicePack) >> >> return true; >> >> } >> >> >> >> return false; >> >> } >> >> >> If you want the rest of the code then email me direct. >> >> >> On 16/06/2011 5:17 PM, Ian Thomas wrote: >> >> Thanks for suggestions. >> >> It's probably as simple to check the framework folders installed on the >> machine (and to test that each has some valid files and is not empty), as to >> try to interpret the registry subkeys. I can't find a good explanation (eg, >> the CDF subkey - what's that?). >> >> The stackoverflow article is a bit cross-purpose (and I had investigated >> that way anyway). >> >> The system.environment.version() of course gives the CLR version under >> which the test assembly was compiled (and will fail, perhaps ? - need to >> test this - if the running machine doesn’t have CLR 4 installed). >> >> I guess the safe way is to check via the Windows Installer and my >> installation, but I haven’t checked recently whether a custom action is >> available to test for installed CLR or .NET Frameworks up to 4.0 (I did see >> some post about the NSIS installer being way out of date with its >> detection). >> >> clrver.exe is very nice - it gives the PID, assembly name, and CLR version >> for each currently running assembly on the machine. But it’s not a >> redistributable. >> >> Interestingly, explorer.exe (Windows Explorer shell) runs using CLR >> v4.0.30319 on my test machine. >> >> ________________________________ >> >> >> >> Ian Thomas >> >> Victoria Park, Western Australia >> >> >> >> >> >> -----Original Message----- >> From: ozdotnet-boun...@ozdotnet.com >> [mailto:ozdotnet-boun...@ozdotnet.com<ozdotnet-boun...@ozdotnet.com>] >> On Behalf Of DotNet Dude >> Sent: Thursday, June 16, 2011 3:13 PM >> To: ozDotNet >> Subject: Re: Installed CLR versions >> >> >> >> Maybe check the registry: HKLM\Software\Microsoft\Net Framework Setup\NDP >> >> >> >> >> >> On Thu, Jun 16, 2011 at 4:54 PM, Ian Thomas >> <il.tho...@iinet.net.au><il.tho...@iinet.net.au>wrote: >> >> > Apart from the utility clrver.exe (and the latest, v4.0.30319.1 is >> needed to >> >> > report both 2.0 and 4.0), how can I determined the installed versions of >> the >> >> > CLR on a machine? >> >> > >> >> > I can't discover a .NET function to report this. >> >> > ________________________________ >> >> > Ian Thomas >> >> > Victoria Park, Western Australia >> >> > >> >> > >> >> >> > > -- w: http://jcooney.net t: @josephcooney