我认为使用.NET程序部署Crystal Report的传统方法是将其设置为发布设置中的先决条件,然后.msi将与Web / network / CD / wtv上的ClickOnce文件打包在一起。当用户运行setup.exe时,它将检查Crystal Report是否在客户端计算机上。如果没有,它将运行Crystal Report .msi。但这总是需要管理员权限。
我的问题是,是否可以将Crystal Report的dll与其他应用程序的输出程序集打包在一起,以便不需要显式安装?我的应用程序使用了许多组件,包括安装的dll足以满足大多数组件的要求。我可以对Crystal Report做同样的事吗?
答案 0 :(得分:4)
我不想成为坏消息的承载者,但Crystal Reports for Visual Studio .NET并非专为点击一次部署而设计。 Crystal Reports是一个本机应用程序,用于处理报表的程序集依赖于许多非.NET库。
许多需要注册的COM对象,支持必须安装的DLL ...许可信息必须放在某处(Crystal Reports在许可方面一直很重要)。
理论上,如果您的应用程序运行完全信任,您可以监视Crystal Reports for .NET运行时的安装,并在c#中复制它,但这是很多工作,并且最多也是不可靠的。 / p>
可悲的是,最后的答案是你不能。
您可以查看Active Reports或其他一些纯.NET报告解决方案。
答案 1 :(得分:2)
如果您自行完成此操作,则可以监视Crystal Reports运行时的安装,以查看它创建/修改的文件/注册表项/设置。或者,您可以反编译msi或从Crystal Reports下载并反编译mst转换文件。一旦你知道它在做什么,写点东西就可以自己做。
答案 2 :(得分:0)
我几乎可以肯定,当你购买时,Crystal Reports的最终版本附带了一个可再发行的库包(不确定这个包是否附带Visual Studio版本)。
答案 3 :(得分:0)
我将在安装站点上提供指向Crystal Redistributable的单独链接,并在ClickOnce应用程序中构建一个检查Crystal文件是否存在。
答案 4 :(得分:0)
您可以将CR运行时合并模块添加到您的单击式MSI软件包中,MSI将负责合并模块的安装,它将Crystal Report运行时安装文件\过程合并到您的应用程序一键式软件包中。 https://origin.softwaredownloads.sap.com/public/site/index.html