Imaginemos que desarrollamos una nueva aplicación en .Net y queremos que esta compruebe la existencia de un framework para .Net ya que sería un poquito feo que al instalar o ejecutar la aplicación diera un error por no disponer de un framework instalado y que no diera una alternativa a dicho suceso.
 

Si nuestra aplicación va a ser desplegada mediante un paquete de instalación, tipo ClickOnce, es fácil saber si esta instalado un determinado framework, podemos obtener más información en el siguiente enlace o en este otro con información para el Framework 3.0.
 

Pero... ¿y si lo qué queremos es distribuir directamente el fichero ejecutable? por ejemplo mediante un CD-Rom, pues tendremos que determinar de alguna forma la existencia o no del Framework .Net y como es evidente no podemos comprobarlo desde .Net. Una forma sería crear una aplicación que hiciera de lanzadera o launcher (en C/C++, VB...) para nuestra aplicación desarrollada en .Net. Otra forma posible, y a la vez sencilla, es comprobar mediante un script si tenemos instalado o no el framework en nuestra máquina.
 

Windows da soporte a lenguajes de script (JScrip o VBScript) mediante WSH (Windows Scripting Host o Windows Script Host) que viene instalado por defecto desde Windows 98 e Internet Explorer 5. WSH lo que nos permite es realizar scripts para la automatización de tareas, algo que seguro los administradores de sistemas Windows habrán agradecido en cierta medida.
 

Volviendo a lo que estamos tratando en este post, para poder comprobar la existencia del framework utilizaremos un script que comprueba si existen una/s determinada/s clave/s en el registro de Windows que hace/n referencia al Framework .Net y sus distintas versiones. En el siguiente enlace tenemos información detallada de qué claves hacen referencia a cada una de las versiones
del .Net Framework desde la versión 1.0 a la 3.5 y como podemos trabajar con ellas desde código manejado. Particularmente, yo accederé a la clave que hace referencia al Framework 2.0:
 

HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install
 

Y el código del script en VBScript (nombre.vbs) es el siguiente:

 

set WshShell=WScript.CreateObject("WScript.Shell")

 

On Error Resume Next

valor = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install")

If valor = 1 Then

            valor=Msgbox("Tienes el Framework 2.0",vbYes)

            ‘o lanzar la aplicación: WshShell.Run("directorio\aplicacion", …)

End If

If valor = 0 Then

            valor=Msgbox("No tienes el Framework 2.0",vbYes)

‘otra opcion lanzar un navegador para descargar e instalar el framework necesario

End If 

 


Bien, en la primera linea declaramos un objeto de tipo WScript.Shell, este objeto aporta funciones para obtener información acerca de las características del sistema y de las variables del entorno, así como trabajar con el registro, que es lo que hacemos más abajo, y con accesos directos. Después, dependiendo de si el valor devuelto al leer el registro es 1 ó 0, se ejecutará nuestra aplicación o tendremos una alternativa para hacer otras cosas como instalar un framework. El script es un ejemplo, pero podríais hacerlo tan complejo como sea necesario.
 

Enlaces que pueden resultar de interés:

WSH Primer On Microsoft TechNet

Manual en castellano para WSH

Scripting en MSDN