How to add new framework version in Installment Requirement page of InstallShield?

As you see from Project Assistant->Installment Requirement screenshot of InstallShield, It is showing only till .NET Framework 4.6 in the list.

How do I add other frameworks like 4.7 and above?

enter image description here


Solution 1:

You will have to create your own custom prerequisite. Just look at all the settings for 4.6, copy them to the new prerequisite and modify accordingly (e.g. registry entries, file paths etc.) to reflect the new version. To verify registry entries and file paths, you will need to have .NET 4.7 installed on a test system. Hopefully this helps.

Solution 2:

The newer prerequisites are now available as an update to InstallShield 2018. Goto Tools -> Check For Updates to get them

Solution 3:

You can add this file: Condition file to path: C:\Program Files (x86)\InstallShield\20xx\SetupPrerequisites

Solution 4:

It looks like higher versions of the .NET framework has not been added yet - even in the latest version Installshield 2018.

Essentially this menu choice looks like it just adds a registry search and a launch condition. This you can create yourself. The following MSDN article describes how to detect versions of the .NET framework: .NET Framework deployment guide for developers.

Here is a quick mock-up:

In the RegLocator table, add this row:

DotNet471Full, 2, SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full, Release, 2

This will target the 32-bit section of the registry on a 64-bit machine. This is how Installshield sets up the check for the previous versions of the framework, so I use that.

In the AppSearch table, add this row:

DOTNETVERSION471FULL, DotNet471Full

In the LaunchCondition table, add this row (see note below on the default Installshield condition - I have extended it here to alleviate some potential problems):

Installed OR DOTNETVERSION471FULL>="#461308", Microsoft .NET Framework 4.7.1 Full package or greater needs to be installed for this installation to continue.

This should show a message notifying the user about the missing pre-requisite .NET framework. However, is it really necessary to check for the latest version? Doesn't it all target the same CLR (version 4)?


A note on testing: Please test thoroughly yourself - in all installation modes (install, uninstall, repair, modify, patch, upgrade). I am not set up for proper testing.

As an example, Installshield's default launch condition of DOTNETVERSION20="#1" - for the .NET framework version 2 - would seem to trigger an un-uninstallable package if the dot net version in question is ever uninstalled (I assume the registry key will be missing then, but I didn't have the time to actually test). Adding Installed as an OR-condition - like WiX does it - seems to alleviate the problem.


Links:

  • Check if prerequisites are installed before installing a windows installer package
  • https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed