排查 ClickOnce 部署中的特定错误

适用于: Visualstudio

本文介绍在部署 ClickOnce 应用程序时可能发生的常见错误,并提供解决每个问题的步骤。

常规错误

尝试查找应用程序文件时,未执行任何操作,或在 Internet Explorer 中呈现 XML,或者你收到“运行”或“另存为”对话框

此错误的可能原因是内容类型 (也称为 MIME 类型) 未在服务器或客户端上正确注册。

首先,请确保服务器配置为将 .application 扩展与内容类型“application/x-ms-application”相关联。

如果服务器配置正确,检查计算机上安装了 .NET Framework 2.0。 如果已安装 .NET Framework 2.0,但仍出现此问题,请尝试卸载并重新安装 .NET Framework 2.0,以在客户端上重新注册内容类型。

错误:“无法检索应用程序。 部署中缺少的文件“或”应用程序下载已中断,检查网络错误,稍后重试”

此消息指示无法下载 ClickOnce 清单引用的一个或多个文件。 调试此错误的最简单方法是尝试下载 ClickOnce 说无法下载的 URL。 下面是一些可能的原因:

  • 如果日志文件显示“ (403) 禁止访问”或“ (404) 找不到”,请验证是否已配置 Web 服务器,使其不会阻止下载此文件。 有关详细信息,请参阅 ClickOnce 部署中的服务器和客户端配置问题
  • 如果 .config 文件被服务器阻止,请参阅 尝试安装具有 .config 文件的 ClickOnce 应用程序时下载错误
  • 确定是否由于 deploymentProvider 部署清单中的 URL 指向与用于激活的 URL 不同的位置而发生此错误。
  • 确保所有文件都存在于服务器上;ClickOnce 日志应告知找不到哪个文件。
  • 查看是否存在网络连接问题;如果客户端计算机在下载过程中脱机,则会收到此消息。

尝试安装具有 .config 文件的 ClickOnce 应用程序时出现下载错误

默认情况下,基于 Visual Basic Windows 的应用程序包含 App.config 文件。 如果尝试从使用 Windows Server 2003 的 Web 服务器进行安装,则可能会遇到问题,因为出于安全原因,该操作系统阻止安装 .config 文件。 若要启用要安装的 .config 文件,请在“发布选项”对话框中选择“使用.deploy”文件扩展名

还必须为 .application、. manifest 和 . deploy 文件设置内容类型 (也称为 MIME 类型) 。 有关详细信息,请参阅 Web 服务器文档。

有关详细信息,请参阅 Windows Server:锁定的内容类型

错误:应用程序格式不正确;日志文件包含“XML 签名无效”

确保已更新清单文件并再次对其进行签名。 使用 Visual Studio 重新发布应用程序,或使用 Mage 再次对应用程序进行签名。

你在服务器上更新了应用程序,但客户端未下载更新

可以通过完成以下任务之一来解决此问题:

  • deploymentProvider检查部署清单中的 URL。 确保更新指向的同一位置 deploymentProvider 中的位。
  • 验证部署清单中的更新间隔。 如果此间隔设置为定期间隔(例如每六小时一次),则 ClickOnce 不会扫描更新,直到此间隔已过。 可以更改清单,以便在每次应用程序启动时扫描更新。 在开发期间,更改更新间隔是验证是否安装了更新的便捷选项,但会减慢应用程序激活速度。
  • 尝试在“开始”菜单上再次启动应用程序。 ClickOnce 可能在后台检测到更新,但会在下次激活时提示安装位。

在更新期间,你会收到一个错误,其中包含以下日志条目:“部署中的引用与应用程序清单中定义的标识不匹配”

发生此错误的原因可能是已手动编辑部署和应用程序清单,并且已导致一个清单中程序集的标识说明与另一个清单不同步。 程序集的标识由其名称、版本、区域性和公钥令牌组成。 检查清单中的标识说明,并更正任何差异。

首次从本地磁盘或 CD-ROM 激活成功,但从“开始”菜单进行后续激活不会成功

ClickOnce 使用部署提供程序 URL 接收应用程序的更新。 验证 URL 指向的位置是否正确。

错误:无法启动应用程序

此错误消息通常指示将此应用程序安装到 ClickOnce 存储中时出现问题。 应用程序出错或存储已损坏。 日志文件可能会告诉你错误发生的位置。

若要解决此问题,请按照下列步骤操作:

  1. 确保部署清单的标识、应用程序清单的标识和main应用程序 EXE 的标识都是唯一的。
  2. 请确保文件路径不超过 100 个字符。 如果应用程序包含的文件路径太长,则可能超出可存储的最大路径的限制。 尝试缩短路径,然后重新安装。

应用程序配置文件中的 PrivatePath 设置不受支持

若要) 使用 PrivatePath (Fusion 探测路径,应用程序必须请求完全信任权限。 尝试更改应用程序清单以请求完全信任,然后重试。

在卸载期间,将显示一条消息,指出“无法卸载应用程序”

此消息通常指示应用程序已被删除或存储已损坏。 选择“ 确定”后,将删除 “添加/删除程序” 条目。

在安装过程中,将显示一条消息,指出未安装平台依赖项

在 GAC (全局程序集缓存) 缺少应用程序运行所需的先决条件。

使用 Visual Studio 发布

Visual Studio 中的发布失败

确保你有权发布到目标服务器。 例如,如果你以普通用户而不是管理员身份登录到终端服务器计算机,则可能没有发布到本地 Web 服务器所需的权限。

如果使用 URL 进行发布,请确保目标计算机已启用 FrontPage 服务器扩展。

错误:无法创建网站“<网站>”。 未安装用于与 FrontPage 服务器扩展通信的组件

确保在要从其发布的计算机上安装了 Microsoft Visual Studio Web 创作组件。 对于 Express 用户,默认情况下不会安装此组件。

错误:找不到文件“Microsoft.Windows.Common-Controls,Version=6.0.0.0,Culture=*,PublicKeyToken=6595b64144ccf1df,ProcessorArchitecture=*,Type=win32”

尝试发布启用了视觉样式的 WPF 应用程序时,将显示此错误消息。 若要解决此问题,请参阅 如何:发布启用了视觉样式的 WPF 应用程序

使用 Mage

你尝试使用证书存储中的证书和收到的空白消息框进行签名

在“ 签名 ”对话框中,必须:

  1. 选择“ 使用存储的证书签名”。
  2. 从列表中选择证书;第一个证书不是默认选择。

单击“不签名”按钮会导致异常

此问题是一个已知 bug。 所有 ClickOnce 清单都需要签名。 只需选择其中一个签名选项,然后选择“确定”。

更多错误

下表显示了客户端计算机用户在安装 ClickOnce 应用程序时可能收到的一些常见错误消息。 每个错误消息都列在错误最可能原因的说明旁边。

错误消息 说明
无法启动应用程序。 联系应用程序发布者。

无法启动应用程序。 请联系应用程序供应商寻求帮助。
这些是应用程序无法启动且找不到其他特定原因时出现的一般错误消息。 这通常意味着应用程序以某种方式损坏,或者 ClickOnce 存储已损坏。
无法继续。 应用程序的格式不正确。 请联系应用程序发布者寻求帮助。

应用程序验证未成功。 无法继续。

无法检索应用程序文件。 部署中的文件已损坏。
部署中的清单文件之一在语法上无效,或包含无法与相应文件协调的哈希。 此错误可能还表示嵌入在程序集中的清单已损坏。 重新创建部署并重新编译应用程序,或在清单中手动查找并修复错误。
无法检索应用程序。 身份验证错误。

应用程序安装未成功。 无法在服务器上找到应用程序文件。 请与应用程序发布者或管理员联系以获取帮助。
部署中的一个或多个文件无法下载,因为你无权访问它们。 这可能是由 Web 服务器返回的 403 禁止访问错误引起的,如果部署中的某个文件以扩展结尾,该扩展使 Web 服务器将其视为受保护的文件,则可能会出现此错误。 此外,包含一个或多个应用程序文件的目录可能需要用户名和密码才能访问。
无法下载应用程序。 应用程序缺少所需的文件。 请联系应用程序供应商或系统管理员寻求帮助。 在服务器上找不到应用程序清单中列出的一个或多个文件。 检查是否已上传部署的所有依赖文件,然后重试。
应用程序下载失败。 检查网络连接,或联系系统管理员或网络服务提供商。 ClickOnce 无法与服务器建立网络连接。 检查服务器的可用性和网络状态。
URLDownloadToCacheFile 失败,并显示 HRESULT“<number>”。 尝试下载“file>”<时出错。 如果用户在部署目标计算机上设置了 Internet Explorer 高级安全性选项“在安全模式和不安全模式之间发生更改时发出警告”,并且如果安装的 ClickOnce 应用程序的安装 URL 从不安全的站点重定向到安全站点 (或反之) ,安装将失败,因为 Internet Explorer 警告会中断它。

若要解决此错误,可以执行以下任务之一:

- 清除安全选项。
- 确保不会以更改安全模式的方式重定向安装 URL。
- 完全删除重定向,并指向实际安装 URL。
写入硬盘时出错。 磁盘上的可用空间可能不足。 请联系应用程序供应商或系统管理员寻求帮助。 这可能表示磁盘空间不足,无法存储应用程序,但也可能指示在尝试将应用程序文件保存到驱动器时出现更常规的 I/O 错误。
无法启动应用程序。 磁盘上没有足够的可用空间。 硬盘已满。 请清除空间,然后再次尝试运行应用程序。
尝试同时加载的已部署激活过多。 ClickOnce 限制可以同时启动的不同应用程序的数量。 这在很大程度上有助于防止恶意企图煽动针对本地 ClickOnce 服务的拒绝服务攻击;尝试快速连续地重复启动同一应用程序的用户最终只会得到应用程序的单个实例。
无法通过网络激活快捷方式。 ClickOnce 应用程序的快捷方式只能在本地硬盘上启动。 无法通过打开指向远程服务器上的快捷方式文件的 URL 来启动它们。
应用程序太大,无法以部分信任方式联机运行。 请联系应用程序供应商或系统管理员寻求帮助。 以部分信任方式运行的应用程序不能大于联机应用程序配额大小的一半,默认情况下为 250 MB。

References