银河国际点击登录程序自我更新之发布,ClickOnce部署Winform程序的方方面面

    一直以来程序安装与更新都是各开发者的入门知识。

1. ClickOnce简介

微软官方对ClickOnce的解释是:ClickOnce
是一项部署技术,您可以利用这项技术来创建基于 Windows
的自行更新的应用程序,并且安装和运行这类应用程序所需的用户交互最少。

使用用ClickOnce主要解决了程序部署中的几个问题:

  • 更新应用程序困难。使用 Microsoft Windows Installer
    部署,每次更新应用程序时,用户都可以安装更新(msp
    文件)并将其应用到已安装的产品中;使用 ClickOnce
    部署,可自动提供更新。只有更改过的应用程序部分才会被下载,然后会从新的并行文件夹重新安装完整的、更新后的应用程序。
  • 对用户的计算机的影响。使用 Windows Installer
    部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用
    ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。
  • 安全权限。Windows Installer
    部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce
    部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全性权限。

简单点说就是ClickOnce部署的程序可以自动更新,近乎绿色,且对程序的权限执行权限拥有更细的粒度。

下面是ClickOnce的基本架构图(图片来源)

银河国际点击登录 1

  对于大型项目,更新可以花大量的时间与各种高阶技术进行处理。但对于小型程序甚至是特定单位的小众用户群体的程序有没有更简单的办法呢?

2. 发布站点建立

我们先来看一下使用ClickOnce部署Winform程序后的发布界面,只要点击Install即可从部署的服务器下载程序安装运行了。

银河国际点击登录 2

所以这里涉及到站点的建立,在Web服务器上建立一个站点以供发布新的ClickOnce包。

在建立站点前,我们需要如下图确认这两个组件是否已经启用。

银河国际点击登录 3

启用后,建立一个站点,路径选择一个自己建立的空目录即可,其他的Web服务器的设置这里不再赘述。

  Microsoft Visual
Studio针对WinForm程序就内置了升级功能,无需要编码,只需要在发布的时候配置即可完成。

3. 配置ClickOnce程序

在Winform项目上右键打开属性界面,配置好相关的编译属性,关于编译属性的详细配置可以参见前一篇文章:关于Winform编译配置那些事。

切换到发布标签,如下图所示。

银河国际点击登录 4

在发布目录里面,可以选择Web、FTP、文件路径模式,这里我们填上我们之前配置好的空的Web站点即可。

在安装模式里面,支持两种安装模式:联机或脱机可用性。一般我们选择用户即使在断线的情况下也能使用发布的应用程序。

点击“程序文件”,打开对话框。

银河国际点击登录 5

这里可以选择哪些文件可以发布到ClickOnce中,以便发布到客户端里面。

默认是将程序编译出的文件包含在ClickOnce包中,这里会遇到一个问题:如何将其他文件如一些说明文档在项目里更新后同时自动打包进部署包里。

比如我们在项目里面添加了一个Readme.txt,默认在我们发布新包时此文件是不会发布进去的。

如果我们需要每次发布进去,只要在Readme.txt上右键打开属性,配置这两个值即可。

银河国际点击登录 6

而在必要组件对话框里面,ClickOnce会自动分析出需要的必要组件,当然你也可以自己选择必要组件,并可以配置是从供应商的页面下载组件、从我们自己配置的发布路径下载或者其他路径。

银河国际点击登录 7

使用ClickOnce发布的程序一个最大的特点就是能够自动更新,即当运行的时候发现发布服务器上有新版本后即会自动更新后再运行,当然更新的策略也可以配置,我们打开“更新”对话框。

银河国际点击登录 8

可以选择在程序启动前还是启动后更新程序。

或者按照时间间隔去检查更新并更新程序。

或者强制用户更新到某个版本。

也可以配置更新包在其他某个路径。

打开“属性”对话框,可以设置一些发布的基本属性。

银河国际点击登录 9

如发布人、套件名称、程序名称等等,这里的一些设置会影响到部署页面的信息和用户安装后的目录。

银河国际点击登录 10

当然这里还可以设置如:刻录成CD安装包后是否插入CD就自动运行,是否用户安装后在桌面创建快捷方式等等,可以自己去点开设置自己需要的东西,就不一一介绍了。

还可以设置是自动增加版本号还是自己设置,这里的版本号设置最好遵照版本号的使用原则,否则后期维护起来会很混乱,好的习惯往往会让你事半功倍。

银河国际点击登录 11

  首先Demo程序已经写好,发布流程如下:

4. 发布ClickOnce包

在发布前,我们再说两个东西,那就是代码访问安全和程序签名。

  • 代码访问安全:ClickOnce 应用程序受 .NET Framework
    中代码访问安全性约束的限制,以帮助限制代码访问受保护的资源和操作的权限。
    因此,了解代码访问安全性的含义以相应地编写 ClickOnce
    应用程序是十分重要的。
    您的应用程序可以使用完全信任或使用部分区域(如 Internet 区域和
    Intranet 区域)来限制访问权限。
  • 程序签名:ClickOnce
    使用证书验证应用程序发行者的真实性,并使用证书为应用程序和部署清单签名,以证明文件未被篡改。
    签名是一个可选的步骤,它会使在生成清单以后更改应用程序文件更容易。
    然而,在没有签名清单的情况下,很难确保应用程序安装程序在受到中间人安全攻击时不被篡改。
    出于这个原因,我们建议您对应用程序清单和部署清单进行签名,以帮助保护您的应用程序。

这部分的解释和详细介绍可以看MSDN里面的保护应用程序章节。

然后点击发布按钮即可,发布成功后IE会自动打开发布好的页面,你只需要将发布的地址给需要安装此程序的客户就可以轻松完成程序的部署了。

 
银河国际点击登录 12

5. 问题补遗

  • 关于签名过期的问题可以参考园友许海彪的这篇文章:解决ClickOnce签名过期问题。
  • 关于ClickOnce信任文件大小的问题,修改注册表HKEY_CURRENT_USER\Software\Classes\Software\Microsoft\Windows\CurrentVersion\Deployment
    做成一项“OnlineAppQuotaInKB”的DWROD值即可。

 
银河国际点击登录 13

6. ClickOnce的一个缺点

ClickOnce使用下来我觉得一个最大的缺点就是不让用户选择安装的问题,默认会放在当前用户的
Documents and Settings 文件夹中 Local Settings 目录下的一系列隐藏目录。

设计的初衷是为了为应用程序存储提供一个位置,ClickOnce从用户那里接管了管理应用程序物理安装的任务。
通过对所有应用程序及其不同版本的程序集和数据文件进行独立保存,缓存还有助于隔离应用程序。

这样限制了ClickOnce的部署路径就很大方面限制了对ClickOnce的选择使用,真希望微软能把这个功能点改进掉。

希望你看到这个缺点的时候不要心底一凉,就像我当时发现有这个缺点时候的心情,按需选择就好。 🙂

 

 银河国际点击登录 14

  从此步开始,可以看出发布有几种经典模式,选择任何一种,最后生成的安装程序会跟你选择的不同而不同,先从默认的来说:

  1.  从CD-ROM或DVD-ROM

        

银河国际点击登录 15

  1. 1 该应用程序不检查更新

银河国际点击登录 16

  点击完成找到发布文件夹:

银河国际点击登录 17

 

   执行setup.exe进行安装,安装后可以看到开始菜单有快捷方式,程序和功能也可以看到:

银河国际点击登录 18

 

银河国际点击登录 19

 

   1. 2 该应用程序从以下位置检查更新

 银河国际点击登录 20

银河国际点击登录 21

 

  2. 从网站

银河国际点击登录 22

银河国际点击登录 23

  2.1 是,该应用程序可以联机或脱机使用

银河国际点击登录 24

  2.2 否,该应用程序只能联机使用

银河国际点击登录 25

  3 从UNC路径或文件共享

银河国际点击登录 26

银河国际点击登录 27

  3.1 是,该应用程序可以联机或脱机使用

银河国际点击登录 28

  3.2  否,该应用程序只能联机使用

银河国际点击登录 29

 

   综合上面3大类安装更新方式,发现很多相似之处。结合个人在实际中的应用觉得安装到客户机上,然后通过网站来提供更新是比较理想的模式。

  缺点:安装路径无法自己定义。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website