4

我正在完成一份申请,该申请将很快提交以进行 Windows 徽标计划验证。要求之一是 x64 兼容性。具体来说,Crystal Reports 2008 必须在 x64 下工作。

我的问题是 Crystal Reports basic 2008(与 Visual Studio 2008 一起打包的那个)没有合并模块,必须使用提供的 .msi 安装程序进行安装。他们为 x86 和 x64 提供单独的安装程序。

那么如何在安装过程中检测 x86 和 x64,然后运行适当的 Crystal msi?如果没有合并模块,这甚至可能吗?

编辑:

这:

IF PROCESSOR_ARCHITECTURE == x86 AND
   PROCESSOR_ARCHITEW6432 NOT DEFINED THEN
   // OS is 32bit
ELSE
   // OS is 64bit
END IF

似乎告诉我如何检测它(感谢 MicSim)。但是如何在 MSI 中执行此操作?是自定义动作吗?然后如何触发 x32 和 x64 水晶报告所需的不同 msi?

为什么 x86 水晶安装程序在 WOW64 下不起作用?您必须安装 x64 Crystal 才能使用您的 WOW64 x86 应用程序。令人沮丧...

编辑2:

好的,所以这里似乎涵盖了检测 x86/x64。现在如何手动触发您选择的 msi?

4

4 回答 4

8

我发现检测 64 位操作系统的最简单方法是使用VersionNT64属性。此属性可用于组件或自定义操作的条件(例如,条件Not VersionNT64仅适用于 32 位操作系统)。

至于在安装过程中安装其他 MSI 软件包,那就有点棘手了。Windows 安装程序一次只允许一个 MSI 运行执行序列。这意味着您必须在UI 序列期间使用自定义操作安装 Crystal Reports MSI(如果这样做要小心,如果 MSI 在静默模式下运行,则会跳过UI 序列),或者创建某种引导程序将依次运行 Crystal Reports MSI 和您自己的。

我从未创建过自己的引导程序,但 InstallShield 在其 setup.exe 中内置了引导程序;他们称以这种方式安装的软件包为先决条件

于 2009-03-28T16:06:44.427 回答
1

刚刚搜索了一下:如果你有一个 MSI 项目,你可以检查这里描述的属性。

有关检测进程和操作系统架构的更多信息,您可能需要阅读有关“HOWTO:检测进程位数”的MSDN 博客。

于 2009-03-27T22:27:32.537 回答
1

您可以使用执行 [SystemFolder]msiexec 的自定义操作来触发 Crystal Reports MSI。只需指定“/i [YourFolderWithCMSI]msiname.msi”作为参数。

于 2009-04-21T17:28:57.300 回答
0

根据这个论坛,Crystal Reports 现在包含一个用于 Visual Studio 2008 的合并模块。

HREF= https://smpdl.sap-ag.de/~sapidp/012002523100005986132008E/cr10_net_mm.zip

编辑(来自作者):事实证明,这不适用于与 Visual Studio 2008 捆绑在一起的 Crystal Reports。

于 2009-07-15T00:39:20.623 回答