Silverlight实例教程 - Out of Browser配置,安装和卸载

在上篇“Silverlight实例教程 - Out of Browser开篇”中,介绍了Silverlight的Out of Browser基础理论知识。本篇将介绍Silverlight的Out of Browser在实例开发前的基础设置以及一些开发技巧。

在创建Silverlight项目时,默认是不支持Out of Browser模式的,所以在使用Silverilght的Out of Browser前,需要对Silverlight项目进行设置,使其支持OOB项目安装和运行。在以下演示中,将创建一个演示例程,该例程将在后续教程中使用,由于该教程不属于Silverilght基础开发教程,所以这里,我不在细述如何创建Silverlight项目,

项目名称: SilverilghtOOBDemo

项目环境:VS2010 + Silverlight 4

Silverlight的Out of Browser应用设置

在Silverlight项目中,设置项目支持Out of Browser模式非常简单,首先右键选中SilverlightOOBDemo客户端项目,选择“Properties”属性

在项目属性栏,默认情况下已经选择了Silverlight标签,而在右边内容页面中,"Enable running application out of the browser"是没有被选中的,我们仅需要选中该选项,保存,即可设置当前Silverlight项目支持Out of Browser。

在"Enable running application out of the browser"选项下,可以看到一个Out-of-Browser Settings...按钮,点击进行该按钮,即可对Out-of-Browser进行设置:

从上图可以看出,开发人员可以通过这些属性,创建个性的Out of Browser应用。以上设置属性是保存在Visual Studio 2010中的OutOfBrowserSettings.xml文件中的,开发人员也可以通过修改该文件来设置OOB应用属性。

1 < OutOfBrowserSettings ShortName ="SilverlightOOBDemoApplication" EnableGPUAcceleration ="False" ShowInstallMenuItem ="True" >
2 < OutOfBrowserSettings.Blurb > SilverlightOOBDemoApplicationonyourdesktop;athome,atworkoronthego. </ OutOfBrowserSettings.Blurb >
3 < OutOfBrowserSettings.WindowSettings >
4 < WindowSettings Title ="SilverlightOOBDemoApplication" />
5 </ OutOfBrowserSettings.WindowSettings >
6 < OutOfBrowserSettings.Icons />
7 </ OutOfBrowserSettings >

在完成以上设置后,点击确定和保存,该项目即可支持Out of Browser模式。

Silverlight的Out of Browser应用安装

Silverlight Out of Browser应用的安装很简单,作为开发人员我们可以通过两种方式提供给用户安装OOB应用到本地。

第一种方式是使用默认的右键菜单按钮安装应用到本地。

这种方式是Out of Browser默认的安装方式,但是该方式的弊端是不易与用户体验,每次用户要右键点击应用才能安装应用。作为专业Out of Browser应用,通常会使用第二种方式安装OOB应用到本地。

第二种方式,添加控件通过Application.Current.Install()事件安装应用到本地。

在当前应用的MainPage下,添加安装按钮,通过按钮点击事件安装应用到本地。

1 < Grid x:Name ="LayoutRoot" Background ="DimGray" >
2 < Button x:Name ="btInstall" Content ="安装应用到本地" Width ="200" Height ="50" Click ="btInstall_Click" />
3 </ Grid >

1 private void btInstall_Click( object sender,RoutedEventArgse)
2 {
3 try
4 {
5 Application.Current.Install();
6 }
7 catch (InvalidOperationExceptionex)
8 {
9 MessageBox.Show( " 应用已经安装. " );
10 }
11 catch (Exceptionex)
12 {
13 MessageBox.Show( " 应用不能被安装,错误信息如下: " + Environment.NewLine + ex.Message);
14 }
15 }

通过上面简单代码也可以达到安装OOB应用到本地的效果。

对于较为专业的Out of Browser应用的安装,我们经常会添加一些代码对当前应用安装进行简单的判断,判断该应用是否已经被安装到了本地,如果已经安装,将忽略不再进行安装步骤。这是对OOB应用的一种保护措施。我们简单修改项目代码,

1 public MainPage()
2 {
3 InitializeComponent();
4
5 if (Application.Current.IsRunningOutOfBrowser)
6 {
7 btInstall.Visibility = Visibility.Collapsed;
8 lbStatus.Text = " 我正在OutofBrowser下运行 " ;
9 }
10 else
11 {
12 btInstall.Visibility = Visibility.Visible;
13 lbStatus.Text = " 我正在浏览器中运行 " ;
14 }
15
16 if (Application.Current.InstallState != InstallState.Installed)
17 {
18 btInstall.IsEnabled = true ;
19
20 }
21 else
22 {
23 btInstall.IsEnabled = false ;
24 btInstall.Content = " 应用已经安装到本地 " ;
25 }
26
27 }

安装本地前:

安装本地后:

重复安装时:

对于安装时所处于的状态控制,我们可以通过InstallState进行判断。我们可以通过添加以下代码:

1 private void Current_InstallStateChanged( object sender,System.EventArgse)
2 {
3 switch (Application.Current.InstallState)
4 {
5 case InstallState.Installing:
6 btInstall.IsEnabled = false ;
7 btInstall.Content = " 正在安装... " ;
8 break ;
9
10 case InstallState.Installed:
11 btInstall.IsEnabled = false ;
12 btInstall.Content = " 已经安装 " ;
13 MessageBox.Show( " OOB应用已经安装到本地 " );
14 break ;
15
16 case InstallState.NotInstalled:
17 btInstall.IsEnabled = true ;
18 btInstall.Content = " 点击安装该应用到本地 " ;
19 break ;
20
21 case InstallState.InstallFailed:
22 MessageBox.Show( " OOB应用安装失败 " );
23 btInstall.IsEnabled = false ;
24 break ;
25 }
26 }

当安装时,用户可以看到提示:

以上是Silverlight Out of Browser安装方法和一些控制技巧。

Silverlight的Out of Browser应用卸载

Silverlight的OOB应用卸载同样很简单,Silverlight没有和安装时候的Install API,所以我们无法通过代码的方式控制卸载,但是可以通过以下两种方式卸载应用:

1. 右键点击应用,选择卸载应用选项;

2. 通过Windows“控制面板",选择对应应用进行卸载,这个是传统型卸载方法,这里不再赘述.

简单实例

在这个简单实例中,我将在当前的OOB应用中添加一个简单的网络监测代码,演示该应用在线和离线时的网络状态。在该应用,我们仍旧会使用System.Windows.Application API来判断应用是否离线安装,而我们还会使用System.Net.NetworkInformation API来判断其网络状态。简单修改代码如下:

1 < UserControl x:Class ="SilverlightOOBDemo.MainPage"
2 xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
5 xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
6 mc:Ignorable ="d"
7 d:DesignHeight ="300" d:DesignWidth ="400" >
8
9 < Grid x:Name ="LayoutRoot" Background ="DimGray" >
10 < StackPanel Orientation ="Vertical" >
11 < Button x:Name ="btInstall" Content ="安装应用到本地" Width ="200" Height ="50" Click ="btInstall_Click" />
12 < TextBlock x:Name ="lbStatus" Foreground ="White" HorizontalAlignment ="Center" FontSize ="18" />
13 < TextBlock x:Name ="lbNetworkStatus" Foreground ="LightGreen" HorizontalAlignment ="Center" FontSize ="18" />
14 </ StackPanel >
15 </ Grid >
16 </ UserControl >
17

1 private void CheckNetworkStatus()
2 {
3 if (NetworkInterface.GetIsNetworkAvailable())
4 {
5 lbNetworkStatus.Foreground = new SolidColorBrush(Color.FromArgb( 255 , 90 , 240 , 90 ));
6 lbNetworkStatus.Text = " 当前网络处于连接状态 " ;
7 }
8 else
9 {
10 lbNetworkStatus.Foreground = new SolidColorBrush(Colors.Red);
11 lbNetworkStatus.Text = " 当前网络处于断线状态 " ;
12 }
13 }
14
15 private void NetworkChange_NetworkAddressChanged( object sender,EventArgse)
16 {
17 CheckNetworkStatus();
18 }

修改构造函数代码:

1 public MainPage()
2 {
3 InitializeComponent();
4
5 if (Application.Current.IsRunningOutOfBrowser)
6 {
7 btInstall.Visibility = Visibility.Collapsed;
8 lbStatus.Text = " 我正在OutofBrowser下运行 " ;
9 }
10 else
11 {
12 btInstall.Visibility = Visibility.Visible;
13 lbStatus.Text = " 我正在浏览器中运行 " ;
14 }
15
16 if (Application.Current.InstallState != InstallState.Installed)
17 {
18 btInstall.IsEnabled = true ;
19
20 }
21 else
22 {
23 btInstall.IsEnabled = false ;
24 btInstall.Content = " 应用已经安装到本地 " ;
25 }
26
27 CheckNetworkStatus();
28
29 Application.Current.InstallStateChanged += Current_InstallStateChanged;
30 NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
31
32 }

运行后可以在离线状态下,查看网络应用状态:

本文主要讲述Silverlight的Out of Browser应用设置,安装和卸载,属于Silverlight实例开发前的基础,下一篇我将继续介绍Silverlight的Out of Browser应用开发基础。

本篇代码下载

欢迎大家加入"专注Silverlight" 技术讨论群:

32679955(六群)
23413513(五群)
32679922(四群)
100844510(三群)
37891947(二群)
22308706(一群)
情况一及解决方法:   在升级silverlight 或者卸载的时候 提示找不到某个某个临时目录下的原始安装文件 从而无法卸载或升级新版本 微软公司真是没有考虑周全 谁会保存原始的临时文件目录 通常在某个temp目录中 中的原始安装包文件呢   这种错误会令人抓狂 不过 还是有解决方法的:   打开注册表工具regedit 在“开始 >运行”中执行命令regedit 找到路径 My Computer >   HKEY CLASSES ROOT > INSATLLER > PRODUCTS > {D7314F9862C648A4DB8BE2A5B47BE100} 然后删除它(注意 在删除注册表键值之前 请右键点击要删除的键值 通过导出功能来做备份 一旦删除之后发生问题 可以通过双击之前导出的注册表文件进行恢复) 退出注册表工具   再试试安装silverlight或升级 是否成功了 反正我是成功了 祝你也好运   情况二及解决方法:   如果在使用windows update更新时 发现某个更新总是安装失败 并且错误代码是643 那么通常都是由于该更新所对应的组件损坏 导致该更新无法安装成功 要解决这个问题 通常都需要将该组件卸载之后重新安装来进行修复 如果无法安装的更新是Microsoft Silverlight的更新 首先需要做好准备的是下载独立的Microsoft Silverlight安装包   方法一:下载Windows Installer clean up工具并安装 在开始菜单中打开它并找到与silverlight相关的项目 将其删除 完成后重新启动计算机 再次安装Microsoft Silverlight并尝试更新 ">情况一及解决方法:   在升级silverlight 或者卸载的时候 提示找不到某个某个临时目录下的原始安装文件 从而无法卸载或升级新版本 微软公司真是没有考虑周全 谁会保存原始的临时文件目录 通常在某个temp目录中 中 [更多]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值