ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
![](https://box.kancloud.cn/2016-03-18_56eb67c868925.jpg) 通过前几篇的学习和实践,相信大家可以很轻松的创建个性化Silverlight Out of Browser应用。上周,在[银光中国网论坛](http://bbs.silverlightchina.net/)有人问到对于Silverlight Out of Browser应用,如何进行在线更新?这篇将针对该问题,介绍一下Silverlight的Out of Browser应用如何进行在线更新的,另外,我们将介绍Silverlight 4中提供的一个新的Out of Browser应用安装方式。 首先说说Silverlight Out of Browser应用在线更新 在本系列[开篇](http://www.cnblogs.com/jv9/archive/2010/07/08/1773276.html)的时候,我们已经介绍,Silverlight Out of Browser和Silverlight Web应用有一些不同,Silverlight Web当更新了服务器端的XAP文件后,用户在重新载入时,会自动更新XAP文件到本地临时目录。而Silverlight Out of Browser应用的自动更新是通过调用[CheckAndDownloadUpdateAsync](http://msdn.microsoft.com/en-us/library/system.windows.application.checkanddownloadupdateasync(v=VS.95).aspx)方法和[Application.CheckAndDownloadUpdateCompleted](http://msdn.microsoft.com/en-us/library/system.windows.application.checkanddownloadupdatecompleted(v=VS.95).aspx)实现的,在判断[UpdateAvailable](http://msdn.microsoft.com/en-us/library/system.windows.checkanddownloadupdatecompletedeventargs.updateavailable(v=VS.95).aspx)属性为True时,说明一个新版本已经被发现和成功下载,相反则是False。如果在检测中发现异常,则可以通过[Error](http://msdn.microsoft.com/en-us/library/system.windows.checkanddownloadupdatecompletedeventargs.error(v=VS.95).aspx)属性查看异常实例信息。 按照常规方法,我们都会在应用启动时进行更新检测,所以,我们需要将代码添加到App.xaml的构造函数中, 首先创建OnCheckAndDownloadUpdateCompleted检测是否有新版本允许下载, ~~~   private void OnCheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)   {               if (e.UpdateAvailable && e.Error == null)               {                   MessageBox.Show("应用新版本已经下载成功,将在下次启动时生效。");               }               else if (e.Error != null)               {                   MessageBox.Show("在检测应用更新时, 在"                                + "出现以下错误信息:"                                + Environment.NewLine                                + Environment.NewLine                                + e.Error.Message);              }  } ~~~ 然后,添加声明在App的构造函数中,使其在安装时进行版本更新检查, ~~~   public App()   {               if (App.Current.InstallState == InstallState.Installed)               {                   App.Current.CheckAndDownloadUpdateCompleted += OnCheckAndDownloadUpdateCompleted;                   App.Current.CheckAndDownloadUpdateAsync();               }               this.Startup += this.Application_Startup;              this.Exit += this.Application_Exit;              this.UnhandledException += this.Application_UnhandledException;              InitializeComponent(); } ~~~ 这样,在Silverlight OOB应用启动时,将检测是否是否有新版本下载,如果有则会自动更新,在下次启动应用时生效。 ![](https://box.kancloud.cn/2016-03-18_56eb67ca62407.jpg) 这里需要说明的是,Silverlight Out of Browser的自动更新,需要在信任应用(Trusted Application)下才能正常执行,否则将返回权限异常错误。 Silverlight Out of Browser的Silent安装模式 我们在[Silverlight实例教程 - Out of Browser配置,安装和卸载](http://www.cnblogs.com/jv9/archive/2010/07/10/1774687.html)中讨论过Silverlight OOB应用安装的两种方式,这里,我们将介绍Silverlight 4中新推出的一种安装方式,叫做Silent安装。这种安装方式是使用命令的方式安装Silverlight OOB应用到本地,该方式不会在客户端显示任何窗口提示信息,悄然的把应用安装到本地。通常,一些开发人员习惯该安装方式应用于一个BAT批处理文件中,让非专业用户简单的安装和使用其应用程序。其实这种安装方式,也就是将XAP文件安装到本地。 大家还记得[开篇](http://www.cnblogs.com/jv9/archive/2010/07/08/1773276.html)时介绍sllauncher.exe命令么"C:/Program Files (x86)/Microsoft Silverlight/sllauncher.exe" 1359404922.localhost,我们使用sllauncher命令执行本地XAP文件,当我们添加/install参数时,即可实现silent安装OOB应用。 先看看具体的silent安装命令格式: "C:/Program Files/Microsoft Silverlight/sllauncher.exe"   /install:"C:/SilverlightOOBDemo/SilverlightOOBDemo.xap"   /origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap  /shortcut:desktop+startmenu   /overwrite    从上面的命令中可以看出sllauncher添加部分参数后,实现不同的功能操作,例如 /**install**:“XAP文件目的路径”,这个参数是允许开发人员自定义XAP文件安装路径,可以是本地磁盘,也可以是网络路径。这个参数是silent安装模式必需的参数。 /**origin**:"XAP文件源路径",这个参数是设置XAP文件的源URL,其目的是为了自动更新而设。作为官方推荐设置该参数,保证其应用自动更新。 /**shortcut**:desktop+startmenu,从字面意思就可以看出,这个参数是创建应用快捷方式的,desktop+startmenu为在桌面和开始菜单都创建该应用快捷方式,如果只想创建桌面快捷方式,使用/shortcut:desktop即可,创建开始菜单快捷方式与之同理。 /**overwrite**,这个选项是确认当前安装XAP文件是否覆盖已经安装过的XAP文件,通常来说,我们都会设置覆盖,这样保持应用为最新版本。 根据以上解释,可以对照看出上面silent安装命令的意思,运行sllauncher,安装SilverlightOOBDemo.xap到本地,源更新地址为[http://localhost:29162/ClientBin/SilverlightOOBDemo.xap](http://localhost:29162/ClientBin/SilverlightOOBDemo.xap),创建桌面和开始菜单快捷方式,并且覆盖原有版本。 另外我们再介绍两个常用sllauncher命令参数: /**emulate**:“XAP文件目的路径”,该命令参数允许安装OOB应用后,自动运行该应用,就像现在很多软件自带的autorun功能相似。 使用方法: "C:/Program Files/Microsoft Silverlight/sllauncher.exe"   /emulate:"C:/SilverlightOOBDemo/SilverlightOOBDemo.xap"   /origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap  /overwrite    /**uninstall**,该命令参数允许开发人员通过命令的方式卸载Silverlight OOB应用。其使用方法: "C:/Program Files/Microsoft Silverlight/sllauncher.exe"   /uninstall /origin:http://localhost:29162/ClientBin/SilverlightOOBDemo.xap  看到这里,我想大家应该有一些明白了,无论是安装还是运行Silverlight OOB应用都和sllauncher命令有关, 安装时,使用/install参数, 运行时,使用默认"C:/Program Files (x86)/Microsoft Silverlight/sllauncher.exe" 1359404922.localhost, 卸载时,使用/uninstall参数。 这个就是Silverlight 4中Out of Browser应用特性之一,Silent Install。 写到这里,[Silverlight 4 Out of Browser实例系列](http://www.cnblogs.com/jv9/archive/2010/08/03/1791632.html)也应该结束了,在该系列中,我们结合着实际例程学习了Silverlight Out of Browser的基础知识以及开发技巧。 在以后的时间里,希望大家能够勤于动手,多实践,开发出更多个性化的Silverlight Out of Browser应用。 欢迎大家加入"专注Silverlight" 技术讨论群: 32679955(六群) 23413513(五群) 32679922(四群) 100844510(三群) 37891947(二群) 22308706(一群)