走出“浏览器”的Web应用程序
Silverlight 3.0应用程序可以脱离浏览器而独立运行,这是一个很值得关注的改变。这意味着浏览器不再是Web应用程序客户端唯一的选择,同时,这也大大简化了Silverlight应用程序在手机等智能移动设备上的开发,提升了Silverlight应用程序的运行性能,并且可以充分利用客户端硬件所拥有的处理能力。
本文介绍如何使用VS2010 BETA2来开发可独立于浏览器的Silverlight应用程序。
1 让Silverlight应用程序独立运行
使用Visual Studio 2010,可以很方便地将一个现有的Silverlight应用程序转换为独立运行。
具体操作很简单,在Visual Studio 2010中打开Silverlight项目的属性页,在其Silverlight选项卡中选中“Enable running application out of the browser”选项,如下图所示:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
点击右部的“Out-of-Browser Settings…”,可以设置更多的选项:
可以看到,在这个对话窗口中可以设置图标,窗体大小等一些参数。最有趣的是左下角的两个参数:
l
Use GPU Acceleration:使用本机显卡的硬件加速,当Silverlight应用程序使用了大量的动画时,选中此项可以提升运行速度。之所以可以做到这点,是由于Silverlight应用程序是在客户端直接执行的,Silverlight运行时可以直接调用本地硬件所提供的计算能力。
l
Show install menu:当选中此项时,在浏览器中右击,会在右键菜单中多一项命令:
将 XXX 安装到此计算机…
执行此命令,将出现一个向导:
单击确定即可安装。
多懂一点:
保存与执行下载的Silverlight应用程序文件
默认情况下,下载的Silverlight程序文件放置于当前登录用户的个人数据文件夹下,请在安装Windows的驱动器上查找以下文件夹,就可以发现下载的Silverlight程序文件放在此文件夹的子文件夹(比如“40171400.localhost”)里。
\Users\登录用户名\AppData\LocalLow\Microsoft\Silverlight\OutOfBrowser\ 40171400.localhost
上面的数字是由Silverlight安装程序随机生成的,用于区分本机所安装的Silverlight应用程序。
Silverlight应用程序的执行是由一个名为sllauncher.exe的程序负责的,它将接收一个保存了Silverlight应用程序文件的文件夹名。
\Program Files\Microsoft Silverlight\sllauncher.exe 40171400.localhost
有趣的是,安装到本地的Silverlight应用程序不会出现的控制面板“添加删除程序”的列表中,如果要删除程序,需要先运行它,然后右击,从弹出菜单中选择“删除此应用程序”命令。
要删除Silverlight应用程序,需要完成两个步骤:
(1)
删除保存于用户文件夹中的程序文件
(2)
删除快捷方式。
2 编程控制Silverlight应用程序的安装过程
我们可以在Silverlight应用程序中使用代码来直接启动安装过程,这需要调用Application对象的Install()方法。
App.Current.Install();
上面代码中的App.Current引用当前的Silverlight Application对象实例。
注意:
如果没有给Silverlight项目设定“Enable running application out of the browser”选项,直接调用Install()方法强制安装Silverlight应用程序到本地,则Silverlight插件将会引发一个ManagedRuntimeError,应用程序将会被强制结束。
另外,如果本Silverlight应用程序已经安装到本地了,再次调用Install()方法会引发一个InvalidOperationException异常。
应用程序可以通过检测一下Aplication对象的
InstallState
属性来避免二次安装。
if (App.Current.InstallState == InstallState.NotInstalled)
App.Current.Install();
else
tbInfo.Text = "本应用程序已经安装,谢谢使用!";
另外,
Aplication对象提供了一个
InstallStateChanged
事件用于跟踪安装状态的改变,可以编写代码响应此事件,通知用户安装完成:
//在页面构造函数中挂接InstallStateChanged事件
App.Current.InstallStateChanged +=
new EventHandler(Current_InstallStateChanged);
以下是事件响应代码:
void Current_InstallStateChanged(object sender, EventArgs e)
{
if (App.Current.InstallState == InstallState.Installed)
tbInfo.Text = "安装完成,您可以直接在桌面或开始菜单中运行此应用程序";
}
另外,
Aplication对象还有一个
IsRunningOutOfBrowser
属性用于检测
Silverlight
应用程序是否运行于浏览器环境内。
示例程序项目
OutOfBrowserSilverlightApplication
综合了上述编程技巧,展示了一个
Silverlight
应用程序的安装与卸载的基本方法。
转载于:https://blog.51cto.com/bitfan/221550