代码之家  ›  专栏  ›  技术社区  ›  Dusty

使用Crystal Reports的ClickOnce部署前提条件

  •  11
  • Dusty  · 技术社区  · 16 年前

    我有一个.NET WinForms应用程序(在VS2005中创建),我使用ClickOnce部署它。在其中一个表单中,我有一个水晶报表查看器控件,供用户查看报表,但为了在应用程序中使用,我必须在安装应用程序之前安装水晶报表XI版本2 PRETEQ。这基本上是在用户机器上安装一个淡化版本的水晶。

    它以这种方式发布,但用户必须等待Crystal安装,这有点麻烦,而且对我来说是一个巨大的麻烦,因为使用prereq发布应用程序需要很长时间才能完成,因为它必须将大型prereq上载到服务器。

    由于发布需要很长时间,并且新安装不是很常见,所以在发布更改时,我通常不包括prereq,而只在需要新安装时与prereq一起发布。

    如果您使用ClickOnce发布带有Crystal Reports的应用程序,这是您发布它的方式,还是有更简单/更好的方法。

    是否有一种方法可以包含/gac所需的cr dll而不是包含和安装Crystal Report prereq,或者有一种方法可以配置OneClick部署,使其不必每次都复制文件。如果我可以配置ClickOnce部署,这样就不必包含prereq,而只需将安装指向一个有帮助的标准位置。

    希望这有点清楚,有人能帮忙。谢谢

    6 回复  |  直到 16 年前
        1
  •  6
  •   Bronumski    15 年前

    部署具有先决条件的ClickOnce应用程序时,可以指定从本地或供应商(如Microsoft)下载先决条件的位置。如果指定供应商,它将不会在部署包中包含先决条件二进制文件。

    如果Crystal没有指定远程位置,则可以始终使用引导程序清单生成器执行自己的先决条件。然后将Crystal二进制文件上载到部署服务器上的某个位置,使用新的二进制存储库作为供应商站点创建自定义前提条件,在ClickOnce应用程序中添加自定义前提条件,并将其设置为从供应商站点下载。

    我相信,在Vs2010中,您有第三个ClickOnce先决条件选项,在该选项中,您可以将特定站点作为目标,从而消除对自定义先决条件的需求。

        2
  •  3
  •   Dusty    15 年前

    从回答来看,这似乎很常见,所以我现在只发布我所做的来解决这个问题。

    首先,我想我认为勃朗姆斯基的反应应该有效,但我在过去尝试的时候没有成功过。

    我解决这个问题的方法只是使用ClickOnce将文件发布到本地的文件夹中,然后手动将文件FTP转移,不包括创建的CrystalReport安装目录。

    我知道这不是一个很好的答案,但我不需要经常部署,所以这是我目前解决这个问题的工作。请通读所有其他答案,找到一个可能有助于解决您的问题的答案。

    希望它有帮助。谢谢

        3
  •  0
  •   Austin Salonen gmlacrosse    16 年前

    从概念上讲,你和我刚才做的一样。我做的一件不同的事情是从构建服务器而不是我的机器部署它。坦白地说,我不在乎部署需要多长时间,只要它不中断 我的 机器。

    我在为构建使用CruiseControl.net,所以当部署发布构建时,我只需为它禁用cc构建,启动发布过程,并在一段时间后检查它。

        4
  •  0
  •   invert    15 年前

    Crystal 11.5 Merge Modules for.NET受到了干扰,这在通过ClickOnce部署时引入了一些问题。

    我们最终放弃了ClickOnce,开始进行自解压设置。( Nullsoft Install System ,并在客户端PC上一次性安装了Crystal Redist。

    Crystal是一场噩梦,你永远无法“正确”地对待它,但你可以减轻头痛。

        5
  •  0
  •   Derek    15 年前

    当我遇到这个问题时,我为Crystal Reports创建了一个独立的安装程序,这对我来说很有意义,因为我有很多程序使用它。

    这缩短了点击一次部署,但是没有prequisite的系统会崩溃,因此当我将所有内容迁移到Visual Studio 2008和更新的Crystal Reports时,我开始将它们包含在内。

    它们每次安装和更新都需要更长的时间,但在我的例子中,管理prequisite与轻松部署相比是不值得的。

        6
  •  0
  •   Unsliced    15 年前

    很抱歉不得不承认,我也遇到了类似的问题,最终得出了类似的任意解决方案。

    最后我坐在两个凳子中间,如果用户不想在他们的机器上使用Crystal,我提供了一个访问托管在Crystal服务器上的WebService的选项,这样就可以远程完成这项工作。如果他们有水晶,工作就在当地完成。

    它不是完美的,但至少它是合理的反应。