If you haven’t seen Tarma InstallMate before, the you need to check this little beauty out. It’s a fully featured installer that have been using it in production for just under a year now and the end-user setup installer just drops out of the end of my build process – sweet!
There’s one thing that is very different with Tarma and all the other installers out there – Tarma doesn’t charge stupid rip-off money like all the other suppliers seem to like to do. You can get their top-of-the-range product for under $90USD per developer. Couple that with totally superb support, rock solid performance and a really rich feature set, Tarma’s a total winner!
Out of the box, Tarma has support for a number of prerequisites like .Net Framework, Access runtimes and Windows Installer. However, it doesn’t differentiate between the Full and Client Profiles for .Net 4 – if the Client Profile is detected then it will not install the full framework and I need to get the full framework onto my user’s machine.
Detecting the Installed Framework Version
To detect which version of the .Net Framework 4 has been installed, you need to check the presence of the following registry keys.
HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client
HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full
More details on that here.
We can set up Tarma to do that easily, like this:
Read Registry Key into a Variable
Go to Symbolic Variables and add a new variable called IsFullDotnet4. Then use Tarma’s support for symbolic expressions to read whether the registry key exists by setting the new variable’s value to this:
<$rkaccess(<HKLM>\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full)>
It should now look like this:
Adjust Prerequisites Condition
Go to the prerequisites section and adjust the condition to install the .Net 4 Runtime by setting the condition to this:
It should look something like this:
That’s all you need – Tarma will now upgrade .Net 4 Client Profile installations to the Full version.