1

我们有一个使用可自由再发行版本的 Crystal Reports 的 VB.Net Winforms (x86) 应用程序。虽然应用程序在我的测试机器上运行良好,但在客户端机器上安装并尝试从应用程序打印报告时,错误:系统找不到指定的文件。文件名:'CrystalDecisions.CrystalReports.Engine ... 显示。

inno-setup 包括客户端在安装期间安装的 CR 可再发行组件“CRRedist2008_x86.msi”。(我们还尝试运行“CRRedist2008_x64.msi”,但收到“不支持的处理器类型”错误)。

我已阅读有关 .NET 1/2 (VS 2002/2005) 的先决条件的合并模块,但找不到与 .NET 3.5 相关的任何有用信息,我想知道这些文件是否仍然需要以及如何打包和部署它们他们实际上是需要的。

非常感谢有关如何解决此安装问题的任何指导。

编辑 Inno-Setup 包含以下命令,用于检查是否安装了 CR,如果没有,则从最终设置表单启动 MSI:

[Run]
Filename: "{app}\CRRedist2008_x86.msi"; Description: "Crystal Reports"; Flags: nowait postinstall skipifsilent; Check: EnsureCrystalReports105Installed();
4

1 回答 1

0

问题是您实际上并未执行 MSI 文件。您可以通过运行安装程序/LOG并查看生成的日志文件来看到这一点。

这是因为 MSI 文件不能直接执行——它们是数据文件,而不是程序。

要解决此问题,您需要运行msiexec,将 MSI 文件作为参数传递;例如。

[Run]
Filename: {sys}\msiexec.exe; Parameters: "/i ""{app}\CRRedist2008_x86.msi"""; ...

您应该查看 msiexec 接受的命令行参数和 MSI 文件接受的属性,看看您是否想做一些不同的事情,例如。以静默方式而不是交互方式运行安装。

此外,如果此组件对于您的应用程序是可选的,并且它可以优雅地处理未安装的组件,则将其作为 postinstall 运行也很好。如果不是这种情况,那么您应该将其视为先决条件,并始终通过PrepareToInstall.

于 2013-04-26T02:26:38.340 回答