martes, 25 de septiembre de 2007 18:00
jonas
¿Cómo saber el Framework .Net que tenemos instalado?
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