ClickOnce 部署概述
更新:2007 年 11 月
ClickOnce 是一种部署技术,使用该技术可创建自行更新的基于 Windows 的应用程序,这些应用程序可以通过最低程度的用户交互来安装和运行。ClickOnce 部署克服了部署中的三个主要问题:
更新应用程序的困难。 使用 Microsoft Windows Installer 部署,每次应用程序更新时,用户都必须重新安装整个应用程序;使用 ClickOnce 部署,则可以自动提供更新。只有更改过的应用程序部分才会被下载,然后会从新的并行文件夹重新安装完整的、更新后的应用程序。
对用户的计算机的影响。 使用 Windows Installer 部署时,应用程序通常依赖于共享组件,这便有可能发生版本冲突;而使用 ClickOnce 部署时,每个应用程序都是独立的,不会干扰其他应用程序。
安全权限。 Windows Installer 部署要求管理员权限并且只允许受限制的用户安装;而 ClickOnce 部署允许非管理用户安装应用程序并仅授予应用程序所需要的那些代码访问安全权限。
过去,这些问题有时会使开发人员决定创建 Web 应用程序而不是基于 Windows 的应用程序,牺牲了 Windows 窗体丰富的用户界面和响应性来换取安装的便利。通过使用利用 ClickOnce 部署的应用程序,您可以集这两种技术的优势于一身。
什么是 ClickOnce 应用程序?
简单说来,ClickOnce 应用程序就是任何使用 ClickOnce 技术发布的 Windows Presentation Foundation、Windows 窗体或控制台应用程序。可以采用三种不同的方式发布 ClickOnce 应用程序:从网页发布、从网络文件共享发布或是从媒体(如 CD-ROM)发布。ClickOnce 应用程序可以安装在最终用户的计算机上,即使在该计算机脱机时也能在本地运行;或者可以仅以联机模式运行,而不在最终用户的计算机上永久安装任何内容。有关更多信息,请参见选择 ClickOnce 部署策略。
ClickOnce 应用程序可以自行更新;这些应用程序可以在较新版本可用时检查是否存在较新版本,并自动替换所有更新后的文件。开发人员可以指定更新行为;网络管理员也可以控制更新策略,如将更新标记为强制性的。最终用户或管理员还可以对更新进行回滚,使应用程序恢复到早期的版本。有关更多信息,请参见选择 ClickOnce 更新策略。
因为 ClickOnce 应用程序是隔离的,所以安装或运行 ClickOnce 应用程序不会破坏现有的应用程序。ClickOnce 应用程序是独立的;每个 ClickOnce 应用程序都安装到一个安全的基于每个用户、每个应用程序的缓存中,并从该缓存运行。默认情况下,ClickOnce 应用程序运行在 Internet 或 Intranet 安全区域中。如果有必要,应用程序可以请求提升的安全权限。有关更多信息,请参见 ClickOnce 部署和安全。
ClickOnce 部署的工作方式
核心 ClickOnce 部署结构基于两个 XML 清单文件:一个应用程序清单和一个部署清单。
应用程序清单描述应用程序本身。这包括程序集、组成应用程序的依赖项和文件、所需的权限以及提供更新的位置。应用程序开发人员使用 Visual Studio 2008 中的发布向导或 Windows 软件开发工具包 (SDK) 中的清单生成工具 (Mage.exe) 来创作应用程序清单。有关更多信息,请参见如何:发布 ClickOnce 应用程序。
部署清单描述应用程序的部署方式。其中包括应用程序清单的位置和客户端应运行的应用程序的版本。管理员使用 Windows SDK 中的清单生成工具 (Mage.exe) 来创作部署清单。
说明: |
---|
Microsoft Visual Studio 2005 中的“发布向导”也可生成部署清单。 |
部署清单在创建后会被复制到部署位置。部署位置可以是 Web 服务器、网络文件共享或媒体(如 CD)。应用程序清单和所有应用程序文件也都被复制到部署清单中指定的一个部署位置。此位置可以与部署清单的部署位置相同,也可以不同。使用 Microsoft Visual Studio 2005 中的“发布向导”时,复制操作是自动执行的。
说明: |
---|
如果开发人员同时也是管理员(即开发人员在将要部署部署清单的网站或文件共享位置具有管理凭据),则只需要此清单即可。如果开发人员不是管理员,则必须由管理员使用命令行工具更新清单并对清单进行签名。 |
当部署清单被部署到部署位置后,最终用户可以在网页上或文件夹中单击表示部署清单文件的图标,从而下载和安装应用程序。大多数情况下,会向最终用户提供一个简单的对话框,让用户确认安装,此后不需要进一步的用户干预,安装会继续执行且应用程序会被启动。在应用程序要求提升的权限的情况下,该对话框还会请用户在安装继续进行之前授予相应权限。
应用程序将添加到用户的“开始”菜单和“控制面板”中的“添加/删除程序”组中。与其他部署技术不同,此部署技术不会向“Program Files”文件夹、注册表和桌面添加任何内容,且安装无需任何管理员权限
说明: |
---|
也可以阻止将应用程序添加到“开始”菜单和“添加/删除程序”组中,实际上是使应用程序的行为与 Web 应用程序类似。有关更多信息,请参见选择 ClickOnce 部署策略。 |
当应用程序开发人员创建更新版本的应用程序时,开发人员也会生成新的应用程序清单,并将文件复制到一个部署位置 -- 通常是原始应用程序部署文件夹的同级文件夹。管理员会更新部署清单,使之指向新版本的应用程序所在的位置。
说明: |
---|
可以使用 Microsoft Visual Studio 2005 中的“发布向导”执行这些步骤。 |
除了部署位置外,部署清单还包含一个应用程序在其中检查有无已更新版本的更新位置(网页或网络文件共享)。ClickOnce“Publish”属性用来指定应用程序应该检查是否存在更新的时间与频率。更新行为可以在部署清单中指定,也可以通过 ClickOnce API 在应用程序的用户界面中以用户选项的形式提供。此外,“Publish”属性还可以用于将更新设置为强制性的,或是用于将应用程序回滚到较早版本。有关更多信息,请参见选择 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)。
有关更多信息,请参见选择部署策略。