29、ClickOnce:.NET 应用程序部署的高效解决方案

ClickOnce:.NET 应用程序部署的高效解决方案

1. ClickOnce 简介

.NET 显著改变了富客户端应用程序的部署方式。在早期版本中,无接触部署是核心,即只需将 Windows Forms 应用程序的程序集复制到目标计算机(或放置在共享网络驱动器上),无需组件注册。而 .NET 2.0 在这一基础上引入了 ClickOnce 这一全新的安装技术。

1.1 ClickOnce 的优势

  • 无需组件注册 :与无接触部署一样,ClickOnce 部署应用程序时无需进行组件注册。
  • 自动生成安装界面 :发布 ClickOnce 应用程序后,.NET 框架会自动创建安装向导,引导用户完成安装过程,还会处理如在开始菜单创建快捷方式等操作。
  • 管理更新过程 :提供多种更新选项,可配置应用程序在启动时自动检查更新,或按一定时间间隔检查更新,还能设置更新是否为强制更新。
  • 集成代码访问安全 :支持在部分信任场景下部署应用程序,确保非管理员用户从第三方网站安装应用程序时的安全性,防止应用程序执行如读写本地文件等潜在危险操作。

1.2 ClickOnce 的适用场景

  • 企业业务应用和内部公司软件 :这类应用通常在企业环境中部署,涉及大量工作站,ClickOnce 可简化部署和更新流程。
  • 部分 Web 部署的消费应用 :适用于频繁更新且安装要求不复杂的消费应用,但对于有详细安装要求或需要引导用户完成特定配置步骤的复杂消费应用不太实用。

2. ClickOnce 安装模型

2.1 Web 部署流程

graph LR
    A[使用 Visual Studio 发布应用到 Web 服务器] --> B[用户访问自动生成的 publish.htm 页面]
    B --> C[用户点击安装链接]
    C --> D[应用程序下载并安装]
    D --> E[应用程序添加到开始菜单]

2.2 其他部署场景

  • 网络文件共享部署 :用户通过浏览特定的 UNC 路径并运行 setup.exe 文件来安装应用程序。
  • CD 或 DVD 部署 :可选择是否支持自动更新功能,若支持需提供应用程序检查更新的 URL 或 UNC 路径。
  • 通过电子邮件发送安装链接 :将应用程序部署到 Web 服务器或网络文件共享后,通过电子邮件发送安装程序的链接。

3. ClickOnce 要求

目标计算机需满足以下最低要求:
- 操作系统 :Windows 98 或更高版本(不包括 Windows NT 4)
- .NET 框架 :.NET Framework 2.0 运行时

若目标计算机未安装 .NET 框架,ClickOnce 引导程序可自动安装,但需要管理员权限。

4. ClickOnce 限制

限制类型 具体限制内容
安装用户范围 只能为单个用户安装应用程序,不能为工作站上的所有用户安装。
安装文件夹 应用程序总是安装在系统管理的用户特定文件夹中,无法更改安装位置。
快捷方式 开始菜单中的快捷方式格式固定,无法添加额外的快捷方式,也不能将应用程序添加到启动组、收藏夹菜单等。
安装向导界面 无法更改安装向导的用户界面,包括添加新对话框、更改现有对话框的文字等。
安装页面 无法更改 ClickOnce 应用程序生成的安装页面,但生成后可手动编辑 HTML。
共享组件安装 不能在全局程序集缓存(GAC)中安装共享组件。
自定义操作 不能执行自定义操作,如创建数据库、注册文件类型或配置注册表设置。

5. 简单的 ClickOnce 部署

5.1 选择发布位置

从 Visual Studio 菜单中选择“Build ➤ Publish [ProjectName]”,启动发布向导,首先选择应用程序的发布位置。该位置不一定是最终托管安装文件的位置,但需知道文件的最终目的地,否则自动更新功能将无法正常工作。

5.2 选择安装类型

  • 网络文件共享 :用户通过 UNC 路径访问并运行 setup.exe 文件进行安装。
  • Web 服务器 :Visual Studio 生成 publish.htm 文件,用户通过浏览器访问该页面并点击链接下载安装应用程序。可选择将文件先发布到本地目录,再通过 FTP 等方式传输到 Web 服务器,也可直接发布到 Web 服务器。
  • CD 或 DVD :需决定是否支持自动更新功能,若支持需提供更新检查的 URL 或 UNC 路径。

5.3 选择在线或离线模式

  • 在线/离线应用 :默认选项,应用程序无论用户是否连接到发布位置都可运行,会在开始菜单添加快捷方式。
  • 在线应用 :用户需返回发布位置运行应用程序,确保用户始终运行最新版本的应用程序,但不适合移动用户。

5.4 部署文件结构

以部署名为 ClickOnceTest 的应用程序到 c:\ClickOnceTest 为例,部署后的文件结构如下:
- c:\ClickOnceTest\setup.exe
- c:\ClickOnceTest\publish.htm(仅在 Web 部署时存在)
- c:\ClickOnceTest\ClickOnceTest.application
- c:\ClickOnceTest\ClickOnceTest_1_0_0_0.application
- c:\ClickOnceTest\ClickOnceTest_1_0_0_0\ClickOnceTest.exe.deploy
- c:\ClickOnceTest\ClickOnceTest_1_0_0_0\ClickOnceTest.exe.manifest

随着应用程序版本更新,会为每个新版本添加新的子目录。

6. 安装 ClickOnce 应用程序

6.1 Web 部署安装步骤

  1. 确保安装了 IIS Web 服务器组件。
  2. 使用 Visual Studio 创建并编译一个基本的 Windows 应用程序。
  3. 启动发布向导,选择发布位置为 http://localhost/ClickOnceTest。
  4. 选择创建在线和离线应用程序,点击“Finish”结束向导,文件将部署到 IIS Web 服务器根目录下的 ClickOnceTest 文件夹。
  5. 直接运行 setup.exe 程序,或加载 publish.htm 页面并点击“Install”,会收到安全提示,询问是否信任该应用程序。
  6. 选择继续后,应用程序将下载并提示确认安装。
  7. 安装完成后,可从开始菜单快捷方式运行应用程序,或通过“添加/删除程序”窗口卸载应用程序。

6.2 快捷方式与程序文件位置

ClickOnce 应用程序的快捷方式是一个应用程序引用文件,实际程序文件存储在难以找到且无法控制的位置,路径格式为:
c:\Documents and Settings[UserName]\Local Settings\Apps\2.0[…][…][…]

7. 更新 ClickOnce 应用程序

7.1 更新步骤

  1. 对应用程序进行微小但明显的更改,如添加一个按钮。
  2. 重新编译并重新发布应用程序到相同位置。
  3. 从开始菜单运行应用程序,应用程序将检测到新版本并询问是否安装。
  4. 接受更新后,新版本的应用程序将安装并启动。

7.2 ClickOnce 引擎

ClickOnce 引擎 dfsvc.exe 负责处理更新和下载操作。

8. ClickOnce 选项

8.1 访问更多设置

在解决方案资源管理器中双击“Properties”节点,然后点击“Publish”选项卡,可访问更多 ClickOnce 设置。

8.2 发布版本

发布版本存储在 ClickOnce 清单文件中,用于确定是否有新的更新可用。默认情况下,每次发布时修订号会自动递增,若要将相同版本的应用程序发布到多个位置,可关闭自动递增选项。

8.3 更新设置

点击“Updates”按钮,可在“Application Updates”对话框中选择更新策略:
- 启动前检查更新 :每次用户运行应用程序时,ClickOnce 基础设施会检查 Web 站点或网络共享上的应用程序更新,若有更新则安装后再启动应用程序。
- 启动后检查更新 :应用程序启动后,ClickOnce 基础设施在后台检查更新,若检测到更新版本,下次用户启动应用程序时安装。可选择每次运行应用程序时检查更新,或按一定时间间隔检查更新。
- 设置最低版本 :可设置最低要求版本,使更新成为强制更新。

8.4 先决条件

默认情况下,每个 ClickOnce 安装程序会检查 .NET 框架等先决条件,并在需要时引导用户安装。可使用“Prerequisites”对话框选择其他先决条件,并选择是否将先决条件与安装文件一起包含在发布位置。

8.5 其他选项

“Options”对话框提供了一些杂项选项,包括设置发布者和产品名称、更改 Web 部署中的安装页面名称、设置应用程序安装后是否自动启动、是否生成 autorun.inf 文件等。

9. ClickOnce 安全

9.1 代码访问安全基础

ClickOnce 安全基于 .NET 中的代码访问安全系统,该系统根据应用程序的来源、创建者等信息(即证据)限制应用程序的权限。应用程序运行时,代码访问安全系统将应用程序的证据与当前安全策略进行比较,确定其应具有的权限。

9.2 ClickOnce 安全提示

ClickOnce 应用程序的权限根据部署方式不同而有所不同:
- CD 驱动器启动 :始终以完全信任模式启动。
- 内部网站点启动 :权限会降低。
- Internet 站点启动 :权限会进一步降低。

若应用程序需要的权限超过当前已授予的权限,用户在安装时会收到安全提示,询问是否授予完整权限集。

9.3 部分信任与 ClickOnce

默认情况下,ClickOnce 应用程序要求完全信任,这可能导致用户在安装时收到安全提示,并违反最小权限原则。为解决这些问题,可在 Visual Studio 中配置应用程序的权限集:
1. 双击解决方案资源管理器中的“Properties”节点,选择“Security”选项卡。
2. 选择“这是一个部分信任应用程序”单选按钮,并从“Zone”列表中选择安全区域。
3. 根据选择的区域,“Permissions”列表会更新为该区域的默认权限。
4. 可通过排除不需要的权限或详细配置权限(点击“Properties”按钮)来调整单个权限,也可添加区域中未包含的权限。
5. 完成配置后,发布应用程序。

9.4 权限计算器工具

可使用“Permissions Calculator”工具快速评估应用程序所需的所有权限,点击“Calculate Permissions”按钮,该工具会分析应用程序并相应调整权限设置,但需审查其确定的权限,因为可能比实际需要的权限更广泛。

10. 总结

ClickOnce 为 .NET 应用程序提供了一种简单、高效的部署方式,尤其适用于企业业务应用和部分 Web 部署的消费应用。但在使用时需了解其限制和安全机制,根据应用程序的具体需求进行合理配置。若需要更复杂的安装和配置功能,可能需要考虑使用 MSI 安装程序。若想了解更多关于 ClickOnce 的信息,可参考 MSDN 帮助或相关 FAQ。

11. ClickOnce 与其他部署方式对比

11.1 与 MSI 部署的对比

对比项 ClickOnce MSI(Microsoft Installer)
配置灵活性 较低,许多行为方面是固定的 较高,可进行复杂的自定义配置
适用场景 企业业务应用、频繁更新且安装要求不复杂的消费应用 需要复杂安装和配置功能的应用
安装范围 只能为单个用户安装 可选择为所有用户或单个用户安装
共享组件安装 不能在 GAC 中安装共享组件 可以安装共享组件到 GAC
自定义操作 不能执行自定义操作 可执行如创建数据库、注册文件类型等自定义操作

11.2 与传统无接触部署的对比

传统无接触部署只需将程序集复制到目标计算机,无需组件注册。而 ClickOnce 在无接触部署的基础上,增加了自动生成安装界面、管理更新过程、集成代码访问安全等功能,使部署更加便捷和安全。

12. ClickOnce 部署的最佳实践

12.1 版本管理

  • 合理设置发布版本,确保自动更新功能正常工作。在测试阶段,可使用自动递增修订号的方式,方便测试人员获取最新版本;在正式发布时,将程序集版本和发布版本设置为匹配。
  • 记录每个版本的更新内容,方便用户了解更新情况。

12.2 安全配置

  • 遵循最小权限原则,配置应用程序的权限集,减少安全风险。
  • 定期审查应用程序的权限需求,根据实际情况进行调整。

12.3 部署位置选择

  • 根据应用程序的使用场景和目标用户,选择合适的部署位置。对于企业内部应用,可选择网络文件共享或内部 Web 服务器;对于面向大众的消费应用,可选择互联网 Web 服务器。
  • 确保部署位置的稳定性和可靠性,避免因网络问题导致部署失败。

12.4 更新策略制定

  • 根据应用程序的更新频率和重要性,选择合适的更新策略。对于重要的安全更新或功能更新,可设置为启动前检查更新;对于一般性的更新,可选择启动后检查更新,以提高应用程序的加载速度。
  • 合理设置更新间隔时间,避免过于频繁的更新给用户带来困扰。

13. ClickOnce 常见问题及解决方法

13.1 安装失败问题

  • 原因 :目标计算机未满足系统要求(如未安装 .NET Framework 2.0 运行时)、网络问题、权限不足等。
  • 解决方法 :检查目标计算机的系统环境,确保满足安装要求;检查网络连接是否正常;以管理员身份运行安装程序。

13.2 更新不及时问题

  • 原因 :发布版本设置不正确、更新策略配置不当等。
  • 解决方法 :检查发布版本号,确保新版本号高于旧版本号;调整更新策略,如增加更新检查的频率。

13.3 安全提示问题

  • 原因 :应用程序要求的权限超过当前已授予的权限。
  • 解决方法 :按照最小权限原则,重新配置应用程序的权限集,减少不必要的权限请求。

14. 未来展望

随着技术的不断发展,ClickOnce 可能会在以下方面得到进一步改进和完善:
- 增强配置灵活性 :提供更多的自定义选项,满足不同用户的需求。
- 提高安全性 :引入更先进的安全机制,保障应用程序的安全运行。
- 支持更多平台 :除了 Windows 系统,可能会支持其他操作系统,扩大应用程序的部署范围。

15. 总结回顾

ClickOnce 作为 .NET 应用程序的一种部署方式,具有无需组件注册、自动生成安装界面、管理更新过程、集成代码访问安全等优点,为开发者和用户提供了便利。但它也存在一些限制,如配置灵活性较低、不能执行自定义操作等。在实际应用中,需要根据应用程序的具体需求,权衡 ClickOnce 的优缺点,选择合适的部署方式。同时,遵循最佳实践,合理配置版本、安全、部署位置和更新策略,以确保应用程序的顺利部署和更新。

graph LR
    A[ClickOnce 部署] --> B[选择发布位置]
    B --> C[选择安装类型]
    C --> D[选择在线或离线模式]
    D --> E[部署文件]
    E --> F[安装应用程序]
    F --> G[更新应用程序]
    G --> H[配置选项]
    H --> I[安全设置]
    I --> J[最佳实践与问题解决]

通过以上对 ClickOnce 的全面介绍,希望能帮助大家更好地理解和使用这一部署技术,为 .NET 应用程序的部署提供更有效的解决方案。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值