如何将Crystal Reports for VS2005重新分发到Vista?

时间:2009-05-19 13:42:45

标签: .net deployment visual-studio-2005 crystal-reports

我有一个使用Visual Studio 2005构建的WinForms应用程序,包括运行和查看报告的VS2005附带的水晶报告。我的安装程序使用合并模块CrystalDecisionsRedist2005_x86来安装Crystal。这一切都运行良好,直到我尝试在Vista上安装,当我注册Crystal dll时出错。这似乎是一个众所周知的问题,正如hereherehere等论坛所报道的那样,但是就像这些事情一样,我找不到普遍接受的解决方案,并且移动他们的网站的业务对象也无济于事。 (需要stackoverflow的问题的完美示例)。

那么如何将Crystal Reports for VS2005应用程序部署到Vista?

更多信息

记录到事件日志中的Vista错误成对出现如下:

  

激活上下文生成失败   为“C:\ Program Files \ Common   文件\业务   对象\ 2.7 \ BIN \ ExportModeller.dll”   附属大会   无法找到Microsoft.VC80.ATL,processorArchictecture =“x86”....请用   sxstrace.exe用于详细诊断。

然后

  

产品:错误1904。   模块“C:\ Program Files \ Common   文件\业务   对象\ 2.7 \ BIN \ ExportModeller.dll”   没注册。 HRESULT   -217010895。请联系您的支持人员。

以及其他各种dll。

我的安装程序包含ATL的合并模块,但我猜他们没有先申请。我的Wise Installer Edition中无法指定首先应用哪些合并模块。

我已经尝试安装Crystal Reports X1合并模块,徒劳地希望它可以向后兼容10.但是当安装工作正常时,当我尝试运行报告时,我得到一个例外,带有引用错误,因为它找不到合适的程序集。不太令人惊讶。

我还尝试使用Business Objects支持软件下载站点提供的CrystalReports10_NET_EmbeddedReporting.msm合并模块(文件名为'用于CR 10 .NET部署的合并模块-En')

我将继续列出我可以从各种线索尝试的事项列表,但如果有人有“答案”,我会很高兴。

感谢。

当前解决方案

我当前的方法/解决方法是在安装我的MSI之前在Vista计算机上安装Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)。这允许我的普通MSI在Vista上正常工作,但并不理想,因为我只想分发一个exe。

我也在SAP / CrystalReports论坛here上提出了这个问题。

更多信息

CR for .NET SP1的release notes注意到此问题已存在且现已解决:

  

ADAPT00738607

     

描述:何时   安装自定义的安装项目   使用Crystal Reports for Visual   Studio 2005合并模块(.msm)   Vista,几个COM组件都失败了   寄存器。例如“模块C:\程序   Files \ Common Files \ Business   对象\ 2.7 \ BIN \ ExportModeller.dll   没注册。 HRESULT   -2147010895。请与您的支持人员联系。“如果您运行setup.exe   再次选择修复,   安装将继续进行   错误,组件可以   注册。

     

新行为:这个问题   已解决

但是,我仍然没有找到任何更新的合并模块,所以我不清楚这个问题在哪里得到解决。如果您不想单独安装C ++包,他们建议的修复安装的解决方法是值得考虑的。

1 个答案:

答案 0 :(得分:1)

我今天遇到了这个问题。似乎应该有一种更简单的方法让msi文件安装其先决条件。

谷歌搜索提供以下blog解释问题。它列出了以下解决方案:

  1. 通过setup chainer
  2. 使用可再发行组件包安装VC 8.0运行时
  3. 安装VC 8.0运行时文件的私有副本。
  4. 构建二进制文件时静态链接到VC 8.0运行时,以便它们不依赖于全局程序集
  5. 使用提交自定义操作或在InstallFinalize之后安排的自定义操作。
  6. 将自行注册信息转换为标准MSI创作,并停止使用自行注册。
  7. 我无法使用选项1,因为我想要一个MSI文件 我不能使用选项3或5,因为它是第三方库 我不想使用选项2,因为我不想处理文件的私有副本。

    这左边的选项4.这似乎不是最好的方式,但它对我有用。我编辑了CrystalDecisionsRedist2005_x86合并模块(使用InstallShield)并删除了SelfReg表中的条目。然后,我创建了一个自定义操作,计划在Commit上注册我删除的文件。