我有一个使用ClickOnce部署的.NET Winforms应用程序(在VS2005中创建)。在其中一个表单上,我有一个Crystal Reports查看器控件供用户查看报表,但为了在应用程序中使用它,我必须包括他们在安装应用程序之前安装的Crystal Reports XI Release 2先决条件。这基本上将一个淡化的Crystal版本安装到用户机器上。
它以这种方式发布,但是对于用户来说,等待Crystal安装是一件麻烦事,这对我来说是一个很大的麻烦,因为使用prereq发布应用程序需要很长时间才能完成,因为它有将大的prereq上传到服务器。
由于发布需要很长时间并且新安装不是很常见,因此我通常不会在发布更改时包含先决条件,而只是在需要新安装时才使用prereq发布它。
如果您已使用ClickOnce通过Crystal Reports发布应用程序,那么您是如何发布它的,还是有更简单/更好的方式。
是否有办法将CR dll包含在/ GAC中,而不是包含和安装Crystal Report先决条件,或者有一种方法可以将OneClick部署配置为不必每次都复制文件。如果我可以配置ClickOnce部署,以便我不必包含prereq,而只是将安装指向一个有用的标准位置。
希望这有点清楚,有人可以提供帮助。感谢
答案 0 :(得分:6)
部署具有先决条件的ClickOnce应用程序时,您可以指定从本地或供应商(例如Microsoft)下载先决条件的位置。如果指定供应商,则不会在部署包中包含必备二进制文件。
如果Crystal没有指定远程位置,那么您始终可以使用Bootstrapper Manifest Generator执行自己的先决条件。然后,您可以将Crystal二进制文件上载到部署服务器上的某个位置,使用新的二进制存储库作为供应商站点创建自定义先决条件,在clickonce应用程序中添加自定义先决条件,并将其设置为从供应商站点下载。
我相信在VS 2010中,您有第三个选项可用于ClickOnce先决条件,您可以在其中定位特定网站,从而无需自定义先决条件。
答案 1 :(得分:3)
从回复来看,这似乎很常见,所以我现在就发布我的做法来解决这个问题。
首先我会开始,我认为Bronumski的回应应该有效,但过去我尝试时并没有成功。
我解决这个问题的方法就是使用ClickOnce将文件发布到本地文件夹,然后手动ftp文件,不包括创建的crystalreport安装目录。
我知道这不是一个好的答案,但我不需要经常部署,所以这是我现在解决这个问题的方法。请仔细阅读所有其他答案,找到可能有助于解决问题的答案。
希望它有所帮助。感谢
答案 2 :(得分:0)
从概念上讲,你的做法和我前一段时间做的一样。我做的不同之处是从构建服务器而不是我的机器部署它。坦率地说,只要没有中断我的机器,我就不在乎部署需要多长时间。
我正在使用CruiseControl.Net进行构建,所以当部署发布版本时,我只会禁用它的CC构建,启动发布过程,并在一段时间后检查它。
答案 3 :(得分:0)
.Net的Crystal 11.5合并模块存在错误,并且在通过ClickOnce部署时会引入问题。
我们最终放弃了ClickOnce并进行了自我提取设置(Nullsoft Install System),并在客户端PC上安装了Crystal Redist。
水晶是一场噩梦,你永远不能“做对”,但你可以减轻头痛。
答案 4 :(得分:0)
当我遇到这个问题时,我为Crystal Reports创建了一个单独的安装程序,这对我来说很有意义,因为我有许多使用它的程序。
这缩短了部署后的点击次数,但没有先决条件的系统会因异常而崩溃,因此当我将所有内容迁移到Visual Studio 2008和更新的Crystal Reports时,我开始包含它们。
每次安装和更新都需要更长的时间,但在我的情况下,管理先决条件与部署的简易性并不值得。
答案 5 :(得分:0)
很抱歉不得不承认我遇到了类似的问题,最终提出了类似的任意解决方案。
我最终坐在两个凳子之间,如果用户不想在他们的机器上使用Crystal,我提供了一个访问托管在Crystal服务器上的web服务的选项,因此可以远程完成工作。如果他们有Crystal,这项工作是在当地完成的。
这并不完美,但最不恰当的反应。