ClickOnce 是 Visual Studio 2005 中包含的全新的 Windows 窗体部署技术。该技术使用智能客户端简化 Web 应用程序的安装和升级。自 .NET Framework 的第一个版本以来,Windows 窗体应用程序部署就一直可以通过 HTTP 进行,并且自那时起就一直处于发展之中。ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。ClickOnce 部署克服了部署中所固有的三个主要问题:
-
更新应用程序的困难。 使用 Microsoft Windows Installer 部署,每次应用程序更新,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后从新的并行文件夹重新安装完整的、更新后的应用程序。
-
对用户的计算机的影响。 使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。
-
安全权限。 Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1844080