VS2005中使用ClickOnce 部署应用程序的升级

2024-03-07 09:08

本文主要是介绍VS2005中使用ClickOnce 部署应用程序的升级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ClickOnce 是 Visual Studio 2005 中包含的全新的 Windows 窗体部署技术。该技术使用智能客户端简化 Web 应用程序的安装和升级。自 .NET Framework 的第一个版本以来,Windows 窗体应用程序部署就一直可以通过 HTTP 进行,并且自那时起就一直处于发展之中。ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。ClickOnce 部署克服了部署中所固有的三个主要问题:

  • 更新应用程序的困难。 使用 Microsoft Windows Installer 部署,每次应用程序更新,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后从新的并行文件夹重新安装完整的、更新后的应用程序。

  • 对用户的计算机的影响。 使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。

  • 安全权限。 Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限。

过去,这些问题有时会使开发人员决定创建 Web 应用程序而不是基于 Windows 的应用程序,为便于安装而牺牲了 Windows 窗体丰富的用户界面和响应性。对于使用 ClickOnce 部署的应用程序,您可以集这两种技术的优势于一身。

什么是 ClickOnce 应用程序?

简单说来,ClickOnce 应用程序就是任何使用 ClickOnce 技术发布的 Windows 窗体或控制台应用程序。可以采用三种不同的方法发布 ClickOnce 应用程序:从网页发布、从网络文件共享发布或是从媒体(如 CD-ROM)发布。ClickOnce 应用程序既可以安装在最终用户的计算机上并在本地运行(即使当计算机脱机时也可以运行),也可以仅以联机模式运行,而不在最终用户的计算机上永久安装任何内容。

ClickOnce 和 Windows Installer 比较表

下表将 ClickOnce 部署的功能与 Windows Installer 部署的功能进行了比较:

功能 ClickOnce Windows Installer

自动更新1

安装后回滚2

从 Web 更新

不影响共享组件或其他应用程序

授予的安全权限

仅授予应用程序所必需的权限(更安全)

默认授予“完全信任”权限(不够安全)

要求的安全权限

Internet 或 Intranet 区域(为 CD-ROM 安装提供完全信任)

管理员

应用程序和部署清单签名

安装时用户界面

单次提示

多部分向导

即需安装程序集

安装共享文件

安装驱动程序

是(自定义操作)

安装到全局程序集缓存

为多个用户安装

向“开始”菜单添加应用程序

向“启动”组添加应用程序

向“收藏夹”菜单添加应用程序

注册文件类型

安装时注册表访问3

受限

二进制文件修补

应用程序安装位置

ClickOnce 应用程序缓存

“Program Files”文件夹

说明

1. 对于 Windows Installer,必须在应用程序代码中实现编程方式的更新。

2. 对于 ClickOnce,可在“添加/删除程序”中实现回滚。

3. ClickOnce 部署只有使用“完全信任”权限才能访问 HKEY_LOCAL_MACHINE (HKLM)。 

ClickOnce 可以提供自动应用程序更新。ClickOnce 应用程序会定期读取其部署清单文件,以查看是否有可用的应用程序更新。如果有,则会下载并运行应用程序的新版本。为提高效率,仅下载那些已更改的文件。

设计 ClickOnce 应用程序时,需要确定应用程序将使用何种策略来检查可用的更新。有三种基本策略可以使用:在应用程序启动时检查更新、在应用程序启动后检查更新(在后台线程中运行)或是提供进行更新的用户界面。此外,还可以确定应用程序检查更新的时间间隔,并且可以强制必须执行更新。

在应用程序启动后检查更新

如果使用该默认策略,则应用程序会在运行期间尝试在后台查找并读取部署清单文件。如果某个更新可用,则当用户下一次运行应用程序时,会提示用户下载并安装该更新。

此策略最适用于低带宽的网络连接或可能需要长时间下载的较大应用程序。

若要启用此更新策略,请在“应用程序更新”对话框的“选择应用程序何时应该检查更新”部分中单击“在应用程序启动后”。

在应用程序启动时检查更新

如果使用此策略,则每当用户启动应用程序时,应用程序都会尝试查找并读取部署清单文件。如果某个更新可用,则会下载并启动该更新;否则,会启动现有版本的应用程序。

此策略最适用于高带宽的网络连接;在低带宽连接上启动应用程序时的长时间延迟可能令人无法接受。

若要启用此更新策略,请在“应用程序更新”对话框的“选择应用程序何时应该检查更新”部分中单击“在应用程序启动前”。

强制执行更新

在有些情况下,您可能需要要求用户运行更新版本的应用程序。例如,您可能对诸如 Web 服务等外部资源进行了某种更改,而这种更改会使得较早版本的应用程序不能正常工作。在这种情况下,您需要将更新标记为“必需”,并阻止用户运行较早的版本。

指定更新时间间隔

还可以指定应用程序检查更新的频率。例如,您可能希望在应用程序每次运行时都检查更新,或是一周检查一次或一个月检查一次。如果在指定时间不存在网络连接,则更新检查会在应用程序下一次运行时执行。

若要指定更新时间间隔,请在“应用程序更新”对话框中设置“指定应用程序检查更新的频率”属性。

提供进行更新的用户界面

如果使用此策略,应用程序开发人员会提供一个用户界面,用户可通过该用户界面选择应用程序检查更新的时间和频率。例如,可以提供一个“Check for Updates Now”(立即检查更新)菜单项,或是一个提供有不同更新时间间隔选项的“Update Settings”(更新设置)对话框。ClickOnce 部署 API 提供一个框架,用于对您自己的更新用户界面进行编程。有关更多信息,请参见 System.Deployment.Application 命名空间。

如果应用程序使用部署 API 控制它自己的更新逻辑,则应按下面在“阻止更新检查”中介绍的那样阻止更新检查。

此策略最适用于您需要为不同用户提供不同更新策略的情况。

阻止更新检查

还可以阻止应用程序检查更新。例如,您有一个永不更新的简单应用程序,但您希望利用 ClickOnce 部署提供的安装便利。

如果应用程序使用部署 API 执行它自己的更新,也应阻止更新检查;请参见上面的“提供进行更新的用户界面”。

更多详情请查看http://msdn2.microsoft.com/zh-cn/library/t71a733d(VS.80).aspx

 

这篇关于VS2005中使用ClickOnce 部署应用程序的升级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/783017

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min