繁体   English   中英

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

[英]Target both x86 and x64 in the Windows Installer (VS2008)

有没有办法使用 Visual Studio 2008 创建 Windows 安装程序,以同时针对 x86 和 x64 操作系统。

在 TargetPlatform 属性中,我只有: x86x64Itanium 而且我知道在某个地方还有一个叫做Any CPU但我找不到它。

另外,我不想创建两个安装程序。

有任何想法吗?

谢谢。

它可以完成,但不能直接使用 Visual Studio。 一般的做法是这样的:

  • 创建一个包含 32 位和 64 位资源的通用 MSI
  • 创建基于目标平台修改 MSI 的MST 转换(一个用于 32 位,一个用于 64 位)
  • 使用 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 生成 2 个相同的安装程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM