上次我们说了如何用最基本的方式用ClickOnce技术部署应用程序项目,本篇我们来认识一下如何让应用程序具备自动更新的功能。

我们依然通过实例来学习。

第一步,随便建一个应用程序项目,至于是控制台、WPF还是WinForm就随意吧,我们的重点发布应用程序。比如这样:

为了更好的演示,我们可以在窗口上显示当前发布的版本号。我这里是一个WinForm项目,故我就用一个Label控件来显示当前发布版本。

注意,这里的版本号是ClickOnce发布的版本号,不是程序集的版本号。所以要使用ApplicationDeployment类(位于System.Deployment.Application命名空间,在程序集System.Deployment.dll中,如果没有引用,就引用吧)。通过静态属性CurrentDeployment可以得到一个与当前部署的应用程序有关的ApplicationDeployment对象。然后从ApplicationDeployment的CurrentVersion属性中就能得到当前版本号。代码如下,至于写在哪个地方,你自己想想吧,这是很基础的事了。

using System.Deployment.Application;

……

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

// 获取当前部署

ApplicationDeployment appd = ApplicationDeployment.CurrentDeployment;

// 取得版本号

this.lblVer.Text = appd.CurrentVersion.ToString();

}

}

好,OK,现在我们可以发布该应用程序了,因为我们要让它能够自动更新,一来我们要发布到IIS或其他服务器上,记得以管理员身份运行VS,不然发布不上去;另外,要开启检查更新功能,上一节中说过,操作也很简单。

在项目属性窗口中,切换到"发布"选项卡,单击"更新…"按钮,启用检查更新即可,至于如何更新,按照默认就可以了,没有必要去改了。

然后确定,这样就算配置好了。然后发布到服务器上。

第二步,通过浏览器输入地址,安装并运行应用程序,如下图所示,注意现在的版本是1.0.0.0。

第三步,关闭应用程序,回到VS,我们把刚才的程序改一下,来模拟升级。比如我在窗口上再加一个按钮,如下图。

第四步,同样,打开项目属性中的"发布"选项卡,再发布一次。

我们看到修订版本号变成1了。

然后直击点击下面的"立即发布"按钮即可。

第五步,发布成功后,从"开始"中再次运行刚才安装的应用程序,会看到提示更新的对话框。

点击确定,就会自动下载并安装更新。这时候我们看到版本号是1.0.0.1了。

ClickOnce部署(2):自动更新的更多相关文章

  1. Excel催化剂开源第6波-Clickonce部署之自动升级瘦身之术

    Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等. 一般来说,我们更新的都是主程 ...

  2. 一种让运行在CentOS下的.NET CORE的Web项目简单方便易部署的自动更新方案

    一.项目运行环境 项目采用的是.NET5开发的Web系统,独立部署在省内异地多台CentOS服务器上,它们运行在甲方专网环境中(不接触互联网),甲方进行业务运作时(一段时间内)会要求异地服务器开机上线 ...

  3. ClickOnce部署疑难杂症:更新时部署与应用程序标识不一致问题。要安装此应用程序,请修改此文件的清单版本或卸载之前存在的应用程序。

    使用ClickOnce部署winform应用程序.无论是安装或者自动更新都极为方便,但有时候一些疑难杂症也令人头疼 1.注意每次部署完成之后 setup.exe无需覆盖,只需要在Application ...

  4. Git github webhook 自动更新/部署代码 php自动更新脚本

    这几天尝试了利用github的webhook,当代码更新到github,我们的测试服务器自动更新最新的gitbub仓库代码. 先列几个大概步骤,有时间再补充详细 1 . 服务器生成ssh key,一般 ...

  5. 如何一键部署项目&&代码自动更新

    my-deploy : 由nodejs写的一个自动更新工具,理论支持所有语言(php.java.c#)的项目,支持所有git仓库(bitbucket.github等). Github 效果如何? 如果 ...

  6. CentOS 7 环境下部署 SVN 并实现自动更新(版本库放在Tomcat下)

    1.安装 SVN 1.1先检查是否有安装 svn rpm -qa subversion #没有什么显示就说明没有安装过yum remove subversion #如果有安装就运行删除老版本yum i ...

  7. 在Docker上部署自动更新ssl证书的nginx + .NET CORE

    突发奇想要搞一个ssl的服务器,然后我就打起了docker的主意,想着能不能搞一个基于Docker的服务器,这样维护起来也方便一点. 设想 想法是满足这么几点: .NET CORE on Docker ...

  8. 解析大型.NET ERP系统 自动更新

    C/S架构的应用程序需要支持自动更新功能,当新版本程序发布后,正在运行的客户端能检测到新版本的程序,通知用户是否下载更新.工作以来参与过几个自动更新模块的设计与维护,撰文总结自动更新模块设计与实现. ...

  9. ClickOnce部署

    (1):一些发布方式 ClickOnce是什么玩意儿,这个问题嘛,在21世纪的互联网严重发达的时代,估计也没有必要大费奏章去介绍了,弄不好的话,还有抄袭之嫌.因此,有关ClickOnce的介绍,各位朋 ...

随机推荐

  1. 图片Base64编码

    我们经常在做Jquery插件的时候需要插入一些自定义的控件,比如说按钮,而我们自己又觉着button标签很丑,而且不同浏览器显示的效果还不一样,这个时候我们需要用到图片,当然,我们可以通过img标签添 ...

  2. 在iPhone上同时关闭语音控制和siri的方法

    分享 步骤及要点:1.在设置里打开siri.语音控制就自动关闭了.2.在siri里的"仅语言拨号"语言项里选择"土耳其文"或者"阿拉伯文". ...

  3. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  4. NFSv4的引用,迁移和备份(用户手册 v0.2)

    RFC3530 定义了NFS文件系统迁移和引用的管理机制.文件系统定位功能通过fs_location属性向客户端提供文件系统的位置信息.fs_location属 性是一个包含有位置信息的列表,位置信息 ...

  5. [LintCode] Maximum Subarray 最大子数组

    Given an array of integers, find a contiguous subarray which has the largest sum. Notice The subarra ...

  6. 浅谈数据库优化方案--表和SQL

    1.数据类型的选择 1.字段最好设置为非空.若字段为char(8),即便是NULL也会现有8个字符的空间. 2.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能, ...

  7. Hibernate框架使用案例

    Hibernate是对JDBC进行了轻量级封装的ORM框架,充当项目的持久层 Hibernate依赖的库: 创建一个工程,添加jar包: hibernate.cfg.xml: <!DOCTYPE ...

  8. 计数排序和桶排序(Java实现)

    目录 比较和非比较的区别 计数排序 计数排序适用数据范围 过程分析 桶排序 网络流传桶排序算法勘误 桶排序适用数据范围 过程分析 比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比 ...

  9. springmvc入门的第一个小例子

    今天我们探讨一下springmvc,由于是初学,所以简单的了解一下 springmvc的流程,后续会持续更新... 由一个小例子来简单的了解一下 springmvc springmvc是spring框 ...

  10. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...