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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(