Silverlight 5 OOB应用程序不能正常更新的特殊情况

Silverlight 5 OOB应用程序不能正常更新的特殊情况,第1张

概述Silverlight 5 OOB应用程序不能正常更新的特殊情况 之前开发了一个Silverlight 5的OOB应用程序,但是在更新上遇到一种特殊情况。 OOB应用程序的更新方式 承载在浏览器中的Silverlight应用程序可以自动更新,但是OOB应用程序可能处于安全性的看哦啊率却不能自动更新,需要调用一个检查更新的方法来手动执行更新。 首先为Application的CheckAndDownl Silverlight 5 OOB应用程序不能正常更新的特殊情况

之前开发了一个Silverlight 5的OOB应用程序,但是在更新上遇到一种特殊情况。

OOB应用程序的更新方式

承载在浏览器中的Silverlight应用程序可以自动更新,但是OOB应用程序可能处于安全性的看哦啊率却不能自动更新,需要调用一个检查更新的方法来手动执行更新。

首先为Application的CheckAndDownloadUpdateCompleted事件注册一个处理程序,如下:

            _app = Application.Current;            if (_app.IsRunningOutOfbrowser)                _app.CheckAndDownloadUpdateCompleted += Application_CheckAndDownloadUpdateCompleted;

然后在创建一个更新按钮,在按钮点击事件中添加检查更新的代码,如下:

        private voID button1_Click(object sender,RoutedEventArgs e)        {            if (_app.IsRunningOutOfbrowser && NetworkInterface.GetIsNetworkAvailable())                _app.CheckAndDownloadUpdateAsync();        }

当然,以上代码也可以放到页面加载事件中,让程序每次启动的时候都自动检查更新,但是最佳实践是,创建一套自动检查版本的机制,然后提示用户有更新,再运行上述代码。

最后,就是编写更新完成后的处理代码,如下:

        voID Application_CheckAndDownloadUpdateCompleted(object sender,CheckAndDownloadUpdateCompletedEventArgs e)        {            if (e.Error != null)            {                if (e.Error is PlatformNotSupportedException)                    MessageBox.Show("App_NeedUpgradePlatform");                else                    MessageBox.Show("App_UpgradeError: " + e.Error.Message);                return;            }            if (e.UpdateAvailable)                MessageBox.Show("App_UpgradeCompleted");            else                MessageBox.Show("App_NoUpdate");        }

这就是更新OOB应用程序的基本方法。

提升信任后的OOB应用程序更新

MSDN文档中对于提升信任后的OOB应用程序的更新,有一个特殊说明,如下:

Silverlight 4 为运行具有提升的信任的浏览器外应用程序提供支持。受信任的应用程序不能使用本节中描述的更新机制,除非应用程序和更新都使用同样有效的、代码签名证书进行了签名。若要更新没有有效签名的受信任的应用程序,用户必须卸载旧版本并且手动安装新版本。有关更多信息,请参见受信任的应用程序。

这句话的意思就是,如果前后更新使用了不同签名文件,或者老版本没有签名,新版本进行了签名,这两种情况都会导致不能进行更新,需要卸载重装。

也就是这句话误导了我半天。

经历不能更新的特殊情况

我开发的OOB应用程序一开始是可以进行更新的,后来不知为何不能进行更新了。寻找了各种原因,尝试了各种方法,推测了各种情况,都无果而终。

最后,我单独建立了一个测试项目来对比测试,在所有配置和代码都一样的情况却可以更新,让我开始考虑是否是Silverlight SDK有问题。在对比了整个项目的文件后,发现测试项目比正式项目少一个文件——InbrowserSettings.xml。这个文件其实是Silverlight 5提供的一个新特性,即在浏览器内提升信任功能生成的一个配置文件。

这个文件估计是什么时候,我尝试勾选”提升浏览器内信任“的选项的时候,生成的;于是我删除了InbrowserSettings.xml这个配置文件。还是问题依旧,不过感觉已经接近问题所在了。之前有过经验,一些配置信息之csproj中也会记录,所以打开csproj文件,发现里面有InbrowserSettingsfile和RequireInbrowserElevation节点;于是把这两个节点删除后,经测试就可以更新成功了。

总结

以上是内存溢出为你收集整理的Silverlight 5 OOB应用程序不能正常更新的特殊情况全部内容,希望文章能够帮你解决Silverlight 5 OOB应用程序不能正常更新的特殊情况所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1018062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存