gpt4 book ai didi

.NET ClickOnce 没有安装必备文件?

转载 作者:行者123 更新时间:2023-12-04 07:14:39 25 4
gpt4 key购买 nike

我有一个使用 Crystal Reports 的 .NET 项目。该应用程序是使用 ClickOnce 分发的。如果用户在他们的计算机上安装了 Crystal,事情就会很好。但是,并非所有最终用户的计算机上都安装了 Crystal Reports。这些用户收到以下错误...

“无法安装或运行该应用程序。该应用程序要求首先在全局程序集缓存 (GAC) 中安装程序集 CrystalDecisions.ReportAppServer.XmlSerialize 版本 10.5.3700.0。”

有没有办法强制安装 ClickOnce 以确保安装了先决条件?

最佳答案

不会。 ClickOnce 和先决条件存在很多混淆。

ClickOnce 对先决条件没有任何作用。没有。 ClickOnce 将文件从服务器复制到客户端的机器,并在服务器文件更新时保持这些文件同步 - 就是这样。它不能在GAC中放东西,注册dll,安装msi文件等。

当您使用 Visual Studio 进行部署时,就会出现混淆。当您发布时,VS 会为您做几件与 ClickOnce 无关的事情。一方面,它为您创建了一个漂亮的 html 页面,其中包含一些指向您的部署的链接。此外,它允许您从几个先决条件中进行选择,并为您创建一个 bootstrap exe。我假设您为 Crystal Reports 安装执行了此操作。 bootstrap 只是一种管理多个先决条件的简单方法。 bootstrap 不会告诉您的用户在安装您的应用程序之前先安装 X,然后是 Y,然后是 Z,而是使这三个安装“无缝”,因此它们看起来好像是一次大安装。如果用户已经拥有它,它还可以跳过 prereq 安装。

如果你留意你的 VS 生成的 html 页面,你可以看到两个链接。一个指向您的 .application 文件(ClickOnce 部署),一个指向 bootstrap exe。您几乎受用户的支配,必须依靠他们来阅读页面并在需要时运行 bootstrap 。一个异常(exception)是 .Net Framework,因为 html 页面可以通过 UserAgent 字符串进行检查。

如果他们不运行 bootstrap ,他们将收到与您所询问的非常相似的错误。

一种可能的解决方案是编写代码来检查它是否已安装。它可以检查注册表或“Program Files”文件夹;无论您需要做什么以确保它已安装。然后优雅地退出并通知用户如果他们没有它。只要您在尝试加载和使用 Crystal 程序集之前进行检查,这就会起作用。

祝你好运!如果您想出更好的解决方案,请回复。

关于.NET ClickOnce 没有安装必备文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/971651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com