一个 ClickOnce 应用程序
我们遵循以下步骤来创建一个简单的 ClickOnce 应用程序。
1. | 启动 Visual Studio 2005。 |
2. | 选择 File,然后单击 New Project。 |
3. | 选择一种语言(C# 或 Visual Basic .NET)并选定 Windows 应用程序。 |
4. | 将项目命名为 MyClickOnceApp 并单击“确定”。 |
5. | 向窗体中添加一个按钮,并将其 Text 属性更改为About。 |
6. | 双击该按钮。在代码窗口中输入以下代码。 Visual Basic .NET: MsgBox("My First ClickOnce Application") C#: MessageBox.Show("My First ClickOnce Application"); |
按下 F5 键运行并测试应用程序。
在 Visual Studio 2005 中,所有的 Windows 应用程序在 Project |MyClickOnceApp Properties 中都有一个 Publish页,可控制部署详细信息:
图 1.配置发布设置
Publishing Location 表示将从其部署应用程序的位置。它可以是一个 Web服务器 (HTTP) 位置(如前所示),但是,也可以是一个常规的网络路径。
Install Mode and Settings 控制多种部署详细信息,例如:
• | 应用程序是仅支持联机使用还是也支持脱机使用。 |
• | Application Files:单个文件的安装位置。 |
• | 前提条件:安装程序是否必须安装其他组件,例如 Windows Installer2.0、.NET Framework 2.0、J# Redistributable Package、SQL Server 2005Express、Crystal Reports 以及 Microsoft Data Access Components2.8。 图 2.配置前提条件 |
• | Updates:控制应用程序应在何时检查更新以及如何向客户端提供这些更新。 图 3.配置更新 |
• | 选项:调整详细信息,例如应用程序语言、Start菜单快捷方式资源名称、用于 Web 部署的 HTML 页以及部署策略票据。 图 4.配置发布选项 |
Publish Version 调整应用程序版本号;每次部署时版本号可以自动增加。
Publish Wizard 允许设置不同的发布选项。该向导还可以通过Build | Publish 菜单调用。所有的 ClickOnce应用程序必须以加密方式进行签名;该向导请求一个现有密钥(推荐)或生成一个新密钥。
图 5.对应用程序进行签名
在运行一次该向导之后,就可以单击 Publish Now 发布更新。在我们的示例中将显示一个Web 页。
图 6.发布的应用程序
该 Web页包含一个脚本,它检查在安装应用程序之前必须安装哪一个额外的“前提条件”安装包。如果没有“前提条件”,则会在应用程序首次运行时安装。
在用户单击 Install链接后,会出现多个可能要求用户干预的对话框(至少首次运行时要求用户干预):
• | Windows XP SP2 警告 |
• | 软件许可协议 |
• | 缺少发布方签名认证 |
部署详细信息
Visual Studio .NET 2005 将为应用程序创建一个具有多个文件和文件夹的新 Web。
图 7.部署文件夹
dotnetfx 文件夹包含可重新发布的 .NET Framework(目前为一个 25 MB 的可执行文件)。
默认情况下,Visual Studio将在每次部署应用程序时增加版本号;每个版本将获得一个与增加版本号相对应的新文件夹。
.application 文件是 HTML 页publish.htm中显示链接的目标。它是一个包含信息(如与应用程序当前版本和当前数字签名相对应的文件夹)的 XML 文件。
Publish.htm 是一个 Web 页,不仅包含指向.application文件的链接,而且包含一些客户端脚本可以进行某些版本检查并显示相应的信息。例如,如果您的计算机没有 .NETFramework,Install MyClickOnceApp 将会显示不同的消息。
Setup.exe 是一个 Win32可执行文件,不仅可以安装应用程序,而且可以按正确的次序安装必需的组件(如 .NET F ramework 自身和 MDAC2.8)。
每个应用程序文件夹包含应用程序的文件和清单文件。清单是一个 XML 文件,主要包含如下信息:
• | 所有应用程序文件的确切身份。该身份包含文件名、版本号、区域性以及处理器体系结构(本示例中为“msil”)。 |
• | 应用程序所需的所有权限。 |
• | 数字签名。 |
运行应用程序
应用程序下载完成后,可以运行它而不用再次下载。在我们的示例中,可以通过单击指向 Web 页的链接或Start 菜单中的快捷方式启动应用程序。在这两种情况下,根据Application Updates项目选项中的设置可以检查是否存在新版本。需要时可以下载新版本。
要检查更新功能,请按如下步骤操作:
1. | 对应用程序进行一次可见的更改,例如更改窗体上按钮的位置。 |
2. | 再次构建按钮并部署。 |
3. | 运行应用程序并检查下载过程。 |
最后请注意:该信息是基于 Visual Studio .NET Beta 1版的,这一点非常重要;新版本可能具有不同的功能。
比较图表 | |||
HREF .EXE | UAB | ClickOnce | |
应用程序不要求更改 | X | X | |
应用程序隔离 | X | X | |
完全支持 | X | X | |
较低的系统影响 | X | X | |
保留代码访问安全 | X | X | |
按需文件下载 | X | X | |
以声明方式列出的必需文件的清单 | X | X | |
以加密方式签名的清单 | X | ||
批处理文件下载 | X | X | |
脱机工作 | (*) | X | X |
事务处理安装 | X | X | |
最佳性能 | X | X | |
Windows 2000 或更高版本要求 | X | (**) | |
Windows 外壳集成 | X | X | |
对更新过程的正确控制 | X | X | |
脱机工作和控制下载过程的 API | X | X | |
可选包的自动安装 | X |
(*) 要求用户干预
(**) 对测试版产品来说还为时过早
小结
ClickOnce 是一种功能非常强大的应用程序部署技术。它是以前所用的部署模式的自然发展,为具有丰富客户端体验的Windows 窗体应用程序提供了可靠性、安全性、性能和灵活性。