¿Cómo instalo .NET Framework solo cuando aún no está instalado?

¿Hay alguna forma de comprobar si se ha instalado .NET Framework 4 e instalarlo solo cuando no está en el sistema?

Lo sé, ¿cómo puedo determinar si el .NET Framework 4 está instalado al marcar la siguiente clave de registro?

hasDotnet4 := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0'); 

¿Cómo ejecuto de forma condicional la instalación de .NET Framework 4 en función de la comprobación anterior?

Lo más fácil que puede hacer es utilizar el parámetro Check , que le permite controlar si se extraerá un determinado archivo de la sección [Files] o si se ejecutará un determinado progtwig de la sección [Run] . El siguiente código de script muestra su uso para la instalación condicional de .NET Framework 4:

 [Files] Source: "dotNetFx40_Full_setup.exe"; DestDir: {tmp}; \ Flags: deleteafterinstall; Check: FrameworkIsNotInstalled [Run] Filename: "{tmp}\dotNetFx40_Full_setup.exe"; Check: FrameworkIsNotInstalled [Code] function FrameworkIsNotInstalled: Boolean; begin Result := not RegKeyExists( HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0'); end;