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

发布于 2024-07-16 03:40:52 字数 743 浏览 7 评论 0原文

我正在完成一份申请,很快将提交给 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 crystal 安装程序不能在 WOW64 下运行? 您必须安装 x64 Crystal 才能与 WOW64 x86 应用程序配合使用。 令人沮丧...

编辑 2:

好的,所以检测 x86/x64 似乎已涵盖在此处。 现在手动触发您选择的 msi 怎么样?

I am finalizing an application that will soon be submitted for Windows Logo Program validation. One of the requirements is x64 compatibility. Specifically, Crystal Reports 2008 must work under x64.

My problem is that Crystal Reports basic 2008 (the one packaged with Visual Studio 2008) has no merge modules and must be installed using the provided .msi installers. They offer separate installers for x86 and x64.

So how would I detect x86 and x64 during install and then run the appropriate Crystal msi? Is this even possible without merge modules?

EDIT:

This:

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

seems to tell me how to detect it (thanks MicSim). But how do I perform this in an MSI? Is it a custom action? And then how do I trigger different required msi's for the x32 and x64 crystal reports?

And why doesn't the x86 crystal installer work under WOW64? You have to install x64 Crystal to work with your WOW64 x86 app. Frustrating...

EDIT 2:

Okay, so detecting x86/x64 seems to be covered here. Now how about manually triggering an msi of your choosing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

魔法唧唧 2024-07-23 03:40:52

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

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

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

The easiest way I have found to detect a 64-bit operating system is to use the VersionNT64 property. This property can be used in conditions for components or custom actions (eg. the condition Not VersionNT64 will only be true for 32-bit operating systems).

As for installing other MSI packages during your installation, that is a little trickier. Windows Installer will only allow one MSI to be running the Execute Sequence at a time. This means that you must either install your Crystal Reports MSI during the UI Sequence using a custom action (be careful if you do this, the UI Sequence is skipped if the MSI is run in silent mode), or create some kind of bootstrapper program that will run both the Crystal Reports MSI and your own in sequence.

I have never created my own bootstrapper, but InstallShield has a bootstrapper program built into their setup.exe; they call packages installed this way prerequisites.

つ低調成傷 2024-07-23 03:40:52

只需在 google 上搜索一下:如果您有 MSI 项目,您可以检查此处。

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

Just googled it: If you have an MSI project you could check the properties like described here.

For further information about detecting process and OS architecture you might want to read this MSDN blog about "HOWTO: Detect Process Bitness".

甜扑 2024-07-23 03:40:52

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

You can trigger the Crystal Reports MSI with a custom action that executes [SystemFolder]msiexec. Just specify "/i [YourFolderWithCRMSI]msiname.msi" as the arguments.

一江春梦 2024-07-23 03:40:52

根据 在本论坛中,Crystal Reports 现在包含 Visual Studio 2008 的合并模块。

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

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

According to this forum, Crystal Reports now includes a merge module for visual studio 2008.

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

Edit (from the author): It turns out that this doesn't work for the Crystal Reports that comes bundled with Visual Studio 2008.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文