Crystal Support 之最高阅览量文章:怎样部署使用 Crystal Reports 和 VS.NET 的程序?(翻译:海波.NET)大纲怎样部署使用 Crystal Reports 和 VS.NET 的程序?==================== 
注意: 在部署使用 Crystal Reports 和 Visual Studio .NET 的程序之前,你必须确认下列信息:与 Visual Studio .NET 一起使用的 Crystal Reports 版本。可能的版本为:- Crystal Reports for Visual Studio .NET 2002 
- Crystal Reports for Visual Studio .NET 2003 
- Crystal Reports 9 
- Crystal Reports 9.2 Crystal Reports 管理组件的“程序集版本”。要检查 Crystal Reports 管理组件的“程序集版本”,查看 Visual Studio .NET 里的 “项目” > “引用”。
Crystal Reports 管理组件包括:- CrystalDecisions.CrystalReports.Engine 
- CrystalDecisions.Shared 
- CrystalDecisions.Reportsource 
- CrystalDecisions.Web 
- CrystalDecisions.Windows.Forms. 所有 Crystal Reports 管理组件的“程序集版本”必须相同。====================
解决方案:要部署使用 Crystal Reports for Visual Studio .NET 2002 的程序
------------------------------------------------ 1. 确保 Crystal Reports 管理组件的“程序集版本”为 9.1.3300。2. 下载完整的 crnet 部署指南:
http://support.crystaldecisions.com/communityCS/TechnicalPapers/crnet_deployment.pdf.asp?recDnlReq=Record&dnlPath=crnet_deployment.pdf
要部署使用 Crystal Reports for Visual Studio .NET 2003 的程序
------------------------------------------------ 1. 确保 Crystal Reports 管理组件的“程序集版本”为 9.1.5000.0。2. 下载完整的 crnet 部署指南:
http://support.crystaldecisions.com/communityCS/TechnicalPapers/crnet_deployment.pdf.asp?recDnlReq=Record&dnlPath=crnet_deployment.pdf3. 使用下列合并模块替换'crnet_deployment.pdf'里的合并模块:Crystal_Database_Access2003.msm 
Crystal_Database_Access2003_enu.msm 
Crystal_Managed2003.msm 
Crystal_regwiz2003.msm 
VC_User_CRT71_RTL_X86_---.msm (被基于 ADO.NET 的报表使用) 
VC_User_STL71_RTL_X86_---.msm (被基于 ADO.NET 的报表使用) 
要部署使用 Crystal Reports 9 的程序(仅限于 Visual Studio 2002) 
------------------------------------------------ 1. 确保 Crystal Reports 管理组件的“文件版本”为 9.2.9466.x。通过查看"\Program Files\Common Files\Crystal Decisions\2.0\Managed\" 文件夹里的、任何管理组件 CrystalDecisions.xxx.dll 的属性,获得“文件版本”;或者通过查看全局访问缓存 (\winnt\assembly)里的相应程序集。要查看全局访问缓存里的“文件版本”,找到任何一个“程序集版本”为 9.2.3300.0 的 Crystal Decisions 管理组件程序集(例如 CrystalDecisions.CrystalReports.Engine),在文件上右击并选择“属性”。选择“版本”选项卡,并检查“文件版本”。2.下载完整的 cr9net 部署指南:
http://support.crystaldecisions.com/communityCS/TechnicalPapers/cr9net_deployment.pdf.asp?recDnlReq=Record&dnlPath=cr9net_deployment.pdf3. 下载 Crystal Reports 9 合并模块。这些合并模块可能组成一个基于 Microsoft Installer (MSI) 安装包,以包含相应的运行时文件。
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr9netmergemodules.zip.asp?recDnlReq=Record&dnlPath=cr9netmergemodules.zip4. 如果你要部署到一个 Web 服务器,你可以安装预编译 MSI installer 包,已提供下载,用作一次性部署。这个分发包安装 .NET 程序需要的所有 Crystal 运行时文件。下载预编译 MSI installer 包:
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr9netredist.zip.asp?recDnlReq=Record&dnlPath=cr9netredist.zip
要部署使用 Crystal Reports 9.2 的程序(与 Visual Studio 2002 和 2003) 
------------------------------------------------ 1. 确保 Crystal Reports 管理组件的“文件版本”为 9.2.9500.x。通过查看"\Program Files\Common Files\Crystal Decisions\2.0\Managed\" 文件夹里的,任何管理组件 CrystalDecisions.xxx.dll 的属性,获得“文件版本”;或者通过查看全局访问缓存 (\winnt\assembly)里的程序集。要查看全局访问缓存里的“文件版本”,找到任何一个“程序集版本”为 9.2.3300.0 的 Crystal Decisions 程序集(例如 CrystalDecisions.CrystalReports.Engine),在文件上右击并选择“属性”。选择“版本”选项卡,并检查“文件版本”。2.下载完整的 cr9net 部署指南:
http://support.crystaldecisions.com/communityCS/TechnicalPapers/cr9net_deployment.pdf.asp?recDnlReq=Record&dnlPath=cr9net_deployment.pdf3. 使用合并模块'dotnetruntime.msm'替换'cr9net_deployment.pdf'里的'crnetruntime.msm'你可以在 Crystal Reports 9.2 光盘的 '\redist\dotnet\msm' 文件夹里找到所需的合并模块。4. 如果你要部署到一个 Web 服务器,你可以安装光盘里的、用作一次性部署的预编译 MSI installer 包。这个分发包安装 .NET 程序需要的所有 Crystal 运行时文件。预编译 installer 包在光盘的 "\redist\netsvr.msi" 文件夹里。==================== 
注意:当与 Visual Studio 2003 里的 ADO.NET 一起使用 Crystal Reports 9.2 时,进行下列合并模块的替换:Vc_crt.msm - 被 VC_User_CRT71_RTL_X86_--- .msm 替换
Vc_stl.msm - 被 VC_User_STL71_RTL_X86_-- -.msm 替换你可以 'C:\Program Files\Common Files\Merge Modules' 文件夹下找到替换的合并模块。
==================== 其他资源
------------------- 要查找下面的部署白皮书,访问:http://support.crystaldecisions.com/search Crystal Reports 9 应用程序部署白皮书 - cr9net_deployment.pdf Crystal Reports 9 for Visual Studio .NET 应用程序部署白皮书 - crnet_deployment.pdf

解决方案 »

  1.   

    Crystal Report 部署原理:
    用 Microsoft Installer (MSI)在您的安装包中包括的合并模块 (MSM) 分发。
    MSI 合并模块(MSM)可在“C:\Program Files\Common Files\Merge Modules”目录中找到。
    合并模块(MSM)分为三类:托管组件、数据库访问和密钥号码。
    托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间。对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,这样您的用户在查看报表时,就不会被要求注册他们的 Crystal版本。具体操作步骤:
    1)新建“安装和部署项目”-->“安装向导”
    2)选择项目类型(这里选“创建用于windows应用程序的安装程序”)-->下一步
    3)选择要包含的文件:添加你的程序文件 + C:\Program Files\Common Files\Merge Modules下的managed.msm、managed_chs.msm、database_access.msm、database_access_chs.msm、regwiz.msm、VC_CRT.msm、VC_STL.msm。-->完成具体功能如下:
    managed.msm、managed_chs.msm、(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
    database_access.msm、database_access_chs.msm、(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
    regwiz.msm、(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装)
    VC_CRT.msm、VC_STL.msm(这个在msdn上绝对没提起,是vc的运行库,估计是Crystal Report或涉及到的某些程序是用vc写的,所以需要它!)4)打开解决方案-->右键点击regwiz.msm的属性,在“MergeMouduleProperties”里的“License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
    5)生成解决方案(或直接按Ctrl+Shift+B)用2002生成的绝对没有问题,我也试过了,但时2003是行不通的,从你的方法看来,你说的还是2002,因为在.net 2003中,regwiz.msm已经改成了Crystal_regwiz2003.msm。其它也都加上了Crystal...2003的字样,我不知道是注册码变了还是什么,但是用AAP5GKS0000GDE100DS在开发环境中注册.net 2003的crystal是可以的。请你在.net 2003的环境中试一试。
      

  2.   

    VS.NET下水晶报表分发时的问题及解决!!!!!!!!!! 
    一、载入报表时报错
      千辛万苦,总算作完了程序,报表在开发机器上测试一切正常,做安装项目,生成后兴冲冲的拿到客户机上去试验,晕,载入报表时却报错(如图1),怎么会???仔细检查了程序代码,实在没有任何错误,看来问题出在报表发布上了。
      经过一番苦苦寻觅,总算找到了问题所在。原来VS.NET环境下发布项目时水晶报表需要包含以下三种组件:
      报表(*.rpt)
      模块(*.msm)
      运行库(*.msm)
      这些模块文件是在C:\Program Files\Common Files\Merge Modules\ 目录里面,别急,让我慢慢跟您说。
      1、报表(*.rpt)
      用户编程时创建的水晶报表文件,这个很简单,你不会找不到它吧,哈哈。
      2、模块(*.msm)
      Managed.msm
      该模块包含了CR for VS .NET的管理模块,如
      CrystalDecisions、CrystalReports.Engine.DLL、CrystalDecisions.Web.DLL, 和CrystalDecisions.Windows.Forms.DLL.……
      Managed_chs.msm是该模块的中文版语言支持。
      Database_Access.msm
      该模块包含了数据库的驱动、与不同数据库的联结、报表导出为RTF 和 HTML格式的文档和图表组件。 
    Database_Access_chs.msm 是此模块的中文版语言支持。
      Regwiz.msm
      注册信息模块,非常重要,必需在这个模块输入水晶报表的注册序列号,如果不填,编译的时候就无法通过
    3、 ..运行库(*.msm)
      如果报表文件使用了ADO.NET的dataset数据集对象,那么VC_CRT.msm 和 VC_STL.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录
      现在,我们知道答案了,在VS.NET安装工程中,系统检测出来的依赖项只有dotNETFXRedist_x86_chs.msm 和 Managed.msm这两个模块,其他的模块我们需要手动加入。
      1、在解决方案资源管理器里,右键单击安装项目选择"添加"-〉"合并模块(M)"
      2、在"添加模块"对话窗体,选择 Managed_chs.msm 、Database_Access, Database_Access_chs, regwiz、VC_CRT.msm 和 VC_STL.msm 模块
      3、重新生成安装项目,没问题,只是生成的安装程序一下子大了七、八兆。
    二、系统注册
      报表在部分Win98的客户端可以载入,在部分Win98的客户端载入报表时却提示"Load Report Failed"(如图6),可恶,居然还出错,怎么回事?  原来,这是因为水晶报表运行时所需的CRQE.dll在客户端的系统注册不正确,而原因又是ATL.dll 的版本不对(Windows 98/ME下的正确版本号应为3.0.8449)。解决办法有两条:
      1、 在客户端安装IE6.0,难怪有的客户端运行正常。
      2、 将ATL.msm模块添加到安装工程,ATL.msm是Visual Studio installer 1.1的一部分,可以去微软的网站http://msdn.microsoft.com/vstudio/downloads/vsi/ 免费下载, 添加办法同前。
    三、语言的支持
      报表在Win2000的客户端一切正常,在Win98的客户端运行提示"该字段名未知"(如图7),不会要客户端都装2000吧,要求也太高了?  仔细分析,原来是报表使用到的sql server数据库中的字段名为中文的缘故,也许是.net的缘故,程序对中文字段名支持得不错,没想到报表这里还是过不了关,将其字段名改名为英文字段名,再测试就一切ok了。
      好了,顺利过关!希望本文对您处理VS.NET下水晶报表发布问题时能有所帮助。
     
    详见http://www.yesky.com/20030327/1659638.shtml
      

  3.   

    我想说的您应制作分发模块,将Crystal Report报表中相应库加进来!