Crystal reports 检测x86/x64并安装正确的.msi

Crystal reports 检测x86/x64并安装正确的.msi,crystal-reports,windows-installer,x86-64,merge-module,Crystal Reports,Windows Installer,X86 64,Merge Module,我正在完成一个应用程序,该应用程序将很快提交Windows徽标程序验证。要求之一是x64兼容性。具体来说,Crystal Reports 2008必须在x64下工作 我的问题是Crystal Reports basic 2008(与Visual Studio 2008一起打包的)没有合并模块,必须使用提供的.msi安装程序安装。他们为x86和x64提供单独的安装程序 那么,如何在安装过程中检测x86和x64,然后运行相应的Crystal msi呢?这在没有合并模块的情况下是可能的吗 编辑: 这:

我正在完成一个应用程序,该应用程序将很快提交Windows徽标程序验证。要求之一是x64兼容性。具体来说,Crystal Reports 2008必须在x64下工作

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

那么,如何在安装过程中检测x86和x64,然后运行相应的Crystal msi呢?这在没有合并模块的情况下是可能的吗

编辑:

这:

似乎告诉我如何检测它(谢谢MicSim)。但我如何在MSI中执行此操作?这是一个定制动作吗?那么如何触发x32和x64 crystal报告所需的不同msi

为什么x86 crystal安装程序不能在WOW64下工作?您必须安装x64 Crystal才能与WOW64 x86应用程序配合使用。令人沮丧的

编辑2:


好的,检测x86/x64似乎在这里有所涉及。现在,手动触发您选择的msi怎么样?

只是在谷歌上搜索一下:如果您有一个msi项目,您可以检查如下所述的属性


有关检测进程和操作系统体系结构的更多信息,请阅读“如何:检测进程位”。

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

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


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

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

根据,Crystal Reports现在包括visual studio 2008的合并模块


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

您可能还希望添加/q作为参数,以便不打扰客户。Windows Installer v4支持VersionNT64。Msix64自Windows Installer v3.1版起受支持,请参阅
IF PROCESSOR_ARCHITECTURE == x86 AND
   PROCESSOR_ARCHITEW6432 NOT DEFINED THEN
   // OS is 32bit
ELSE
   // OS is 64bit
END IF