Una de las características más interesantes de Silverlight 3, desde el punto de vista del desarrollo de aplicaciones RIA, es la posibilidad de poder ejecutar una aplicación Silverlight fuera del navegador.
Para poder utilizar la aplicación no es necesario abrir el navegador e indicar la Url dónde se encuentra. La aplicación la podemos tener instalada en nuestro equipo y acceder a ella como si accediésemos a una aplicación WinForm tradicional.
Eso sí, la aplicación no deja de ser una aplicación Silverlight y sigue ejecutándose dentro de la sandbox, no teniendo acceso a todos los recursos de sistema.
Si queremos que nuestra aplicación pueda comportarse de esta manera, sólo tenemos que hacer unos pequeños ajustes en la configuración del proyecto.
En la pestaña de Silverlight de las propiedades del proyecto, tendremos que activar el check de permitir que la aplicación se pueda ejecutar fuera del navegador.
Una vez activado esta opción podremos configurar diversos parámetros que nos permiten personalizar cómo se instala; el nombre de la aplicación, el nombre del acceso directo, la descripción, los diferentes iconos que se usarán al instalarse…
Una vez hechos los cambios en las propiedades se creará un nuevo fichero en el proyecto llamado OutOfBrowserSettings.xml, que contiene la configuración establecida.
<OutOfBrowserSettings ShortName="AppEjemplo" EnableGPUAcceleration="False" ShowInstallMenuItem="True">
<OutOfBrowserSettings.Blurb>Esta es una aplicacion de ejemplo.....</OutOfBrowserSettings.Blurb>
<OutOfBrowserSettings.WindowSettings>
<WindowSettings Title="Aplicacion de Ejemplo" />
</OutOfBrowserSettings.WindowSettings>
<OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>
Y ya está instalada. La aplicación queda instalada en C:Users[Nombre de Usuario]AppDataLocalLowMicrosoftSilverlightOutOfBrowser.
Si una vez instalada pinchamos sobre el acceso directo del menú de inicio o del escritorio tendremos la aplicación funcionando, fuera del navegador.
Y ya por último, decir que por código también podemos dar la orden de que la aplicación se instale, y por ejemplo, usar un botón de la aplicación en lugar del menú contextual.
private void AppInstal_Click(object sender, RoutedEventArgs e)
{
Application.Current.Install();
}
Muy buen post Ibon. Una pregunta, ¿tienes alguna referencia de que recursos del sistema son accesibles desde una aplicación Silverlight 3 y cuales no?
Un saludo
JC’s
Buenas Juan Carlos,
La lista es un poco complicada de hacer, suelen ser los que tiene acceso el navegador. Básicamente, ninguno.
La integración con el sistema es a traves de dialogos (OpenFileDialog y SaveFileDialog). Luego tienes un IsolatedStorage a nivel de aplicación y otro a nivel de dominio.
Pero hay algunas consideraciones dependiendo de si se ejecuta con Out Of Browser o no.
Sin Out Of Browser:
Se pueden abrir urls por código
Tienes un bridge con el DOM y JS del navegador
Tienes 1MB de cuota de almacenamiento
Con Out Of Browser:
Las urls se deben ejecutar como fruto de un evento de usuario (Click por ejemplo).
Tienes 20 MB de cuota
Además para instalar la aplicación con el Application.Current.Install(), tampoco se puede hacer automáticamente. Tiene que venir de un evento de usuario.
Luego tienes la Local Connection API para mandar mensajes entre aplicaciones Silverlight (nunca a una nativa).
Y por últmo, hay un caso que aun no he comprobado. Si la aplicación la distribuyes como una HTML Application (.hta) tiene derechos más permisos de ejecución y se puede acceder al sistema de ficheros.
Gracias Eugenio, tu comentario me aclara bastantes cosas!
Un saludo
JC’s