如何让ClickOnce进行手动更新(含代码)
来源:互联网 发布:易通网络加速器安卓版 编辑:程序博客网 时间:2024/06/03 15:53
ClickOnce发布方便快捷,可实现程序远程下载、安装、自动更新等功能,但是还是有些细节做的不到位。比方服务器更新了一个新版本1.0.0.22,这时客户端运行程序检查到有新版本更新,如果不小心点击“跳过”按钮,那么再次打开程序的时候将不会再去检查是否有新版本。也就是说新版本1.0.0.22再也更新不到了,必须等待下一个新版本的发布。针对这种情况我们需要在程序中添加一个手动更新的功能,以下是网上找到的方法,特此分享给大家。
方法一:
该方法出至microsoft官方文档,以下是C#代码:
using System.Deployment.Application;
private void InstallUpdateSyncWithInfo(){ UpdateCheckInfo info = null; if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; try { info = ad.CheckForDetailedUpdate(); } catch (DeploymentDownloadException dde) { MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message); return; } catch (InvalidDeploymentException ide) { MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message); return; } catch (InvalidOperationException ioe) { MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message); return; } if (info.UpdateAvailable) { Boolean doUpdate = true; if (!info.IsUpdateRequired) { DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel); if (!(DialogResult.OK == dr)) { doUpdate = false; } } else { // Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " + "version to version " + info.MinimumRequiredVersion.ToString() + ". The application will now install the update and restart.", "Update Available", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (doUpdate) { try { ad.Update(); MessageBox.Show("The application has been upgraded, and will now restart."); Application.Restart(); } catch (DeploymentDownloadException dde) { MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde); return; } } } }}
官网地址:https://msdn.microsoft.com/zh-cn/library/ms404263.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1
方法二:
该方法是elearning视频上记录下来的,以下是C#代码:
private void InstallUpdateSyncWithInfo() { if (ApplicationDeployment.IsNetworkDeployed == true) { ApplicationDeployment thisDeployment = ApplicationDeployment.CurrentDeployment; this.Text = "正在检测更新..."; if (thisDeployment.CheckForUpdate() == true) { if (MessageBox.Show("检测到有新的版本可以进行更新,现在需要更新吗?", "选择是否要进行更新", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { this.Text = "正在更新中"; thisDeployment.Update(); MessageBox.Show("更新完毕,将要重启程序!"); Application.Restart(); } else { this.Text = Application.ProductName + " " + Application.ProductVersion; } } else { MessageBox.Show("并没有新的版本进行更新!"); } } else { MessageBox.Show("这不是网络发布的程序"); } }
1 0
- 如何让ClickOnce进行手动更新(含代码)
- 如何让ClickOnce进行手动更新
- clickonce部署后的手动更新代码
- ClickOnce手动更新
- 如何:管理 ClickOnce 应用程序的更新
- ClickOnce更新
- 如何手动更新Joomla!
- 利用ClickOnce手动更新和按需加载的一个DEMO
- 如何让C#编译不安全代码(含unsafe的代码)
- Exchange帐号如何手动更新?
- ntp如何手动更新时间
- 如何手动更新 Laravel Homestead
- 手动让客户端从WSUS服务器更新
- 让 ubuntu 自动进行更新
- Unity5.1 创建IOS的Xcode项目. 如何手动增量更新应用的资源和代码.
- 如何发布 ClickOnce 应用程序
- 如何能让Label手动换行
- 驱动程序如何手动卸载与更新
- 将Lambda表达式作为参数传递并解析——在构造函数参数列表中使用Lambda表达式(C#)
- iOS获取设备型号、设备类型等信息
- Android--用intent打开各种文件
- Android GestureDetector手势识别类
- android org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT ???@
- 如何让ClickOnce进行手动更新(含代码)
- clean install 出现错误 -source 1.5 中不支持 diamond 运算符
- Github no password log in
- Java的进程与线程
- 常用oracle 数据库查询 重要!!
- Lightmap 色差、丢失|内存泄露...
- Python爬虫入门五之URLError异常处理
- iOS第三方整理
- 初学者级java.lang.RuntimeException: Unable to instantiate activity ComponentInfo