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