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

标签 crystal-reports windows-installer x86-64 merge-module

我正在完成一份申请,该申请将很快提交以进行 Windows Logo 计划验证。要求之一是 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 中执行此操作?是自定义 Action 吗?然后如何触发 x32 和 x64 Crystal 报告所需的不同 msi?

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

编辑2:

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

最佳答案

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

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

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

关于crystal-reports - 检测 x86/x64 并安装正确的 .msi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/691666/

相关文章:

c# - Crystal 报表和登录问题

c# - Visual Studio 2012 未在工具箱中显示 Crystal Report Viewer?

assembly - 汇编中的异或语句

c++ - 在 amd64 架构上用 C++ 将图像缓冲区 blit 到另一个缓冲区的 xy 偏移的最快方法

c# - 数据库连接导致 CrystalReports ReportDocument 内存泄漏

javascript - 如何通过 window.open 传递数据或对象

wix - 始终自动登录 WiX

WiX 和 ARPINSTALLLOCATION

WiX - 功能条件不起作用

assembly - 为什么编译器不使用 ENTER 和 LEAVE 指令?