3

有什么方法可以使用 Visual Studio 2008 创建 Windows 安装程序以同时针对 x86 和 x64 操作系统。

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

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

有任何想法吗 ?

谢谢。

4

3 回答 3

4

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

您可以使用Orca创建转换。如果您想要商业解决方案,可以尝试 Advanced Installer 或 InstallShield。

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

于 2011-07-21T10:57:31.833 回答
3

它可以完成,但不能使用 VS 安装程序。我有一位同事使用 InstallShield 产品实现了这一目标,但我可以说这绝对是一次 hack,最后他得到了更好的结果,制作了两个不同的安装程序,一个用于每个目标位数。

我还需要开导你:

在 TargetPlatform 属性中,我只有:x86、x64、Itanium。而且我知道在某个地方还有一个叫做 Any CPU

TargetPlatform属性不会改变您正在安装的应用程序的位数,您会将它与程序集本身的目标平台混淆。MSI 是交付工具,其中的 .Net 程序集是有效负载。TargetPlatformMSI 上的设置不控制 .Net 程序集的 JIT 编译方式,而是用于帮助确定安装路径(如果设置为 x86,则默认安装路径应为%PROGRAMFILES(x86)%,并且将针对不同的注册表配置单元。

于 2011-07-21T09:51:22.977 回答
1

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

于 2011-07-21T09:44:36.857 回答