2009-11-08 62 views
5

我相信用.NET程序部署Crystal Report的传统方式是将其设置为发布设置中的先决条件,然后.msi将与ClickOnce文件在网络/网络/ CD/wtv上。当用户运行setup.exe时,它将检查Crystal Report是否在客户端计算机上。如果不是,则运行Crystal Report .msi。但是这总是需要管理员权限。部署Crystal Report dll只使用ClickOnce而不使用先决条件.msi

我的问题是,是否有可能将Crystal Report的dll与其他应用程序的输出程序集一起打包,以便不需要显式安装?我的应用程序使用了许多许多组件,包括一个dll,安装它们大部分都是足够的。我可以用Crystal Report做同样的事吗?

+0

嗨,我面临同样的问题,你有没有想过办法做到这一点? – matao 2011-06-23 08:24:51

回答

2

如果您自己设置了自己,您可以监视Crystal Reports运行时的安装以查看它创建/修改的文件/注册表项/设置。或者,您可以反编译msi或从Crystal Reports下载并反编译mst转换文件。一旦你知道它在做什么,写一些东西来自己做。

4

我讨厌成为坏消息的持有者,但Crystal Reports for Visual Studio .NET不适用于一次性部署。 Crystal Reports是一个本地应用程序,用于处理报告的程序集依赖于许多非.NET库。

许多需要注册的COM对象,支持必须安装的DLL ......必须放置在某处的许可信息(Crystal Reports在许可方面一直很重要)。从理论上讲,如果您的应用程序运行完全信任,您可以监视Crystal Reports for .NET运行时的安装,并将其复制到C#中,但这是很多工作,并且最多也是不可靠的。

不幸的是,最终的答案是你不能。

您可能会检查Active Reports或其他一些纯.NET报告解决方案。

+0

感谢您的回答。然而,只是想知道。我的应用程序目前通过ClickOnce部署了一堆dll。他们大多数不太漂亮。很多COM的东西,其中一些非常重。除Crystal Report外,其他一切看起来都很好。我的其他3款第三方产品也需要许可(DotNetBar,DevXpress和FarPoint)。我理论上可以用Crystal Report做同样的事情,并通过dll通过ClickOnce传递吗? – xster 2009-11-08 07:26:13

0

我几乎可以肯定的是,当您购买时(不确定此包是否随附Visual Studio版本),有一个随Crystal Reports的最终版本一起提供的库的可再发行组件包。

+0

嗨,但我认为可再发行组件是一个需要管理员权限才能安装的.msi。我的意图是让用户通过ClickOnce软件包获取我的软件,并在没有管理员的情况下安装本地需要的所有软件。 – xster 2009-11-14 21:04:20

+0

@Xster - “没有管理员”意味着您的ClickOnce应用**非常有限**,无法做到(例如网络访问,文件访问)。 – 2009-12-16 21:55:44

0

我会提供一个单独的链接到安装站点上的Crystal Redistributable,并在ClickOnce应用程序中检查是否存在Crystal文件。