Dotnet环境下的crystal report的部署(下)

安装 Crystal Report 9 Advanced Edtion 中文版后,在 vs.net 的 MSDN 中多了个 Crystal Report 9 文件夹,明显就是 Crystal Report 9 Advanced Edtion 中文版带的帮助文档了。在其中找到了 “ 部署包含 Crystal Reports 的 Windows 应用程序 ” 这个主题,这里给出的如何部署 Crystal Reports 的 Windows 应用程序说明跟 vs.net 本身带的 crystal 的部署说明基本一致,就是多了一点 “ 如果您部署的 Windows 应用程序使用 ADO.NET 数据集,则还需要包括 VC_CRT 和 VC_STL 合并模块。 ” 这个说明,其实我的程序里就用了 ADO.NET 数据集,就必须把 VC_CRT 和 VC_STL 合并模块打包进 MSI ,按照说明一步步的重新生成了一个 MSI 安装文件,安装到三台目标机器。

安装完毕,运行程序,显示报表又出问题了,报错:

load crpe32.dll failed

查遍了 Crystal Report 9 Advanced Edtion 中文版的随机文档,帮助文件都查不出问题所在,无奈之下到 crystal 的官方网站 support.crystaldecisions.com 去查找有没有问题的答案,在上面找到关于 Crystal Report 9 的升级文档 “Merge Modules for Simplified Chinese Crystal Reports 9 and .NET” 的一个文件名为 cr9netmergemodules_chs.zip 的文件,是部署 Crystal Report 9 的合并包,加压这个文件,看其中的 readme.txt 文件,按其中的说明下载了这个合并包的详细说明文档 cr9net_deployment.pdf 。

真是不看不知道,一看气死人。原来 Crystal Report 9 的部署跟随机的帮助文档说的完全不同,随机带的那个文档应该适用于 Crystal Report for .net 版本的,对 Crystal Report 9 的部署根本就不适用。

下面是 cr9net_deployment.pdf 说明中的部署 Crystal Report 9 的步骤:

  1. 打开 Windows 应用程序。
  2. 在解决方案资源管理器中,右击 Windows 应用程序解决方案,指向 “ 添加 ” ,然后单击 “ 新建项目 ” 。
  3. 在 “ 添加新项目 ” 对话框中,选择 “ 项目类型 ” 窗格中的 “ 安装和部署项目 ” ,然后选择 “ 模板 ” 窗格中的 “ 安装项目 ” 。单击 “ 确定 ” 按钮。
  4. 在解决方案资源管理中,右击安装项目,指向 “ 添加 ” ,然后单击 “ 项目输出 ” 。
  5. 在 “ 添加项目输出组 ” 中,选择 “ 主输出 ” ,然后单击 “ 确定 ” 。

将自动添加所有依赖项,如 dotnetfxredist_x86_enu.msm 和 dotnetcrystalreports.msm 。

  1. 需要将 dotnetcrystalreports.msm 排除在项目之外,在 解决方案资源管理器中右击这个模块的右键,选择 “ 排除 ” 。
  2. 在解决方案资源管理器中,右击安装项目,指向 “ 添加 ” ,然后单击 “ 合并模块 ” 。
  3. 在 “ 添加模块 ” 对话框中,选择下列要添加到安装项目的合并模块,然后单击 “ 打开 ” : * reportengine.msm, * crnetruntime.msm * license.msm * mapping.msm (可选,当在报表中使用了 geographic maps 时) * VC_CRT.msm 、 VC_STL.msm ** ( ** 如果您部署的 Windows 应用程序使用 ADO.NET 数据集,则还需要包括 VC_CRT 和 VC_STL 合并模块)
  4. 在解决方案资源管理器中,右击 license.msm 文件,然后选择 “ 属性 ” 。
  5. 在 “ 属性 ” 窗口中,展开 ** MergeModuleProperties ** ,然后在 “ 许可证密钥 ” 属性框中输入一个有效的许可证密钥。
  6. ** 注意 ** 每当部署 Crystal Reports 应用程序时,必须提供许可证密钥。
  7. 从 “ 生成 ” 菜单中,选择 “ 生成解决方案 ” 以生成应用程序

OK ,这回生成的 MSI 再到三个目标机器上安装后,结果如下:

1. Win xp 的机器一切正常,显示,导出,导出的 word 文档都正常。

2. Win2000 的机器,还是那样,报表显示正常, 可是一旦点击了报表显示器中的导出图标,整个程序就死掉了,在任务管理器显示 “ 未响应 ” ,只能强行关掉。

3. win98 第二版的机器, 报表显示正常,但是 一旦点击了报表显示器中的导出图标,出现一下错误:

“ 文件内 c:\windows\temp\temp_3bbd1e66-a59b-4001-a8e4-3ebfd436ab2d.rpt 出错 : 无效导出 dll 或导出格式。”

到此的结果就是这样,我不知道为什么在 Win2000 的机器两个版本的导出都会造成程序死掉(实际上我安装了两台 win2000 的机器,结果都是这样),也不知道为什么在 win98 第二版上面, crystal for .net 的版本就一切正常,而 Crystal Report 9 版本就会在导出时出错。有哪位知道的请一定要告诉我,我的 QQ : 362682 , email : [email protected]

Published At
Categories with Web编程
Tagged with
comments powered by Disqus