在Windows安装程序(VS2008)中同时安装x86和x64

本文关键字:安装 x86 x64 Windows 程序 VS2008 | 更新日期: 2023-09-27 18:02:53

是否有办法使用Visual Studio 2008创建一个Windows安装程序来同时针对x86和x64操作系统?

在TargetPlatform属性中,我只有:x86, x64, Itanium。我知道还有一个地方叫Any CPU,但是我找不到它。

另外,我不想创建两个Setup.

有什么想法吗?

谢谢。

在Windows安装程序(VS2008)中同时安装x86和x64

这是可以做到的,但不能直接使用Visual Studio。一般的方法是:

    创建一个包含32位和64位资源的通用MSI
  • 创建MST转换(一个用于32位,一个用于64位),根据目标平台修改MSI
  • 使用EXE引导程序动态检测平台并将正确的转换应用于MSI

你可以用Orca创建变换。如果你想要一个商业解决方案,你可以尝试Advanced Installer或InstallShield。

如果这看起来太复杂,您可以简单地使用单独的32位和64位软件包

这是可以做到的,但不能用VS安装程序。我有一个同事用InstallShield产品做到了这一点,但我要说的是,这绝对是一个hack,最后他得到了一个更好的结果,制作了两个不同的安装程序,每个目标比特一个。

我也需要启发你:

在TargetPlatform属性中,我只有:x86, x64, Itanium。我知道还有一个叫做Any CPU

TargetPlatform属性不会改变您正在安装的应用程序的位,您会将其与程序集本身的目标平台混淆。MSI是运载工具,其中的。net程序集是有效载荷。MSI上的TargetPlatform设置不控制。net程序集是如何JIT编译的,相反,它被用来帮助确定安装路径(如果它被设置为x86,那么默认的安装路径应该是%PROGRAMFILES(x86)%,并且不同的注册表将被定位。

我可能错了,但我很确定这是不可能做到的。您提到的Any-CPU是由。net编译器用于程序集(。Net程序集默认情况下与体系结构无关,但可以强制编译为x86或x64)。但是由于windows-Installer是本地的win32 exe,它不能生成为"Any-CPU"。因此必须生成两个相同的安装程序,一个用于x86,一个用于x64。