在 64 位机器上强制 32 位先决条件(来自包含 x86 和 x64 安装程序的包)

Forcing a 32bit prerequisite (from a package that includes both x86 and x64 installers) on 64bit machine

我正在研究由多个项目(包括一些外部第 3 方库)组成的解决方案。该解决方案有一个 setup project,它安装(非自定义)先决条件,默认情况下带有 x86x64 版本(一起在 1 个先决条件中)。由于 BadImageFormatException,来自未知来源,解决方案中的项目将目标平台设置为 x86(在项目属性中,而不是配置 select 或)。

我的问题是,当我在 64 位机器上使用安装程序时,安装了 64 位版本的先决条件,这导致错误提示我应该使用正确的(x86)版本的先决条件。

我想知道我是否可以使用安装项目强制使用特定版本的先决条件。

EDIT/UPDATE: 由于我的问题似乎引起了很多混乱,我决定 post 2 个屏幕截图,希望能解释更多.

==>

这包括两个 包,我不知道有什么方法可以将它们分开。 至于错误,它是软件版本不匹配的一般错误(如“请安装适当的 Crystal 包含正确版本 Crystal 需要报告运行时(x86、x64 或 Itanium)。")。不幸的是,我无法截取错误的屏幕截图,因为我暂时无法访问 "clean" PC。 如果我使用 64 位可再发行包(因为使用它的项目是 32 位),我就明白了,如果我使用 32 位可再发行包,那么有效,我不明白,如果我可以强制安装程序 select 32 位包,我的问题解决了。

这个问题基本上没有答案。

我通过找到为 32 位平台构建的 1 个库(没有特别的原因,事实证明)并在目标平台设置为 "Any CPU" 的情况下重建它来解决我的问题(与项目的其余部分),这反过来又允许我使用自动选择的 64 位可再发行包(而不是像我最初打算的那样强制使用 32 位包)。

this question 的答案包含一个检查程序集信息(和目标 CPU 体系结构)的 PowerShell 命令,这是我用来检查项目中每个永恒库并找到其中一个的方法构建为 x86。