C# 在Windows安装程序(VS2008)中以x86和x64为目标
是否有任何方法可以使用Visual Studio 2008创建Windows安装程序,以同时针对x86和x64操作系统 在TargetPlatform属性中,我只使用了:C# 在Windows安装程序(VS2008)中以x86和x64为目标,c#,visual-studio,operating-system,windows-installer,target-platform,C#,Visual Studio,Operating System,Windows Installer,Target Platform,是否有任何方法可以使用Visual Studio 2008创建Windows安装程序,以同时针对x86和x64操作系统 在TargetPlatform属性中,我只使用了:x86,x64,Itanium。我知道在某个地方还有一个叫做Any-CPU,但我找不到它 另外,我不想创建两个设置 有什么想法吗 谢谢。我可能错了,但我很确定这是办不到的。 您提到的任何CPU都由.Net编译器用于程序集(.Net程序集在默认情况下与体系结构无关,但可以强制编译为x86或x64)。 但由于windows安装程序是
x86
,x64
,Itanium
。我知道在某个地方还有一个叫做Any-CPU
,但我找不到它
另外,我不想创建两个设置
有什么想法吗
谢谢。我可能错了,但我很确定这是办不到的。 您提到的任何CPU都由.Net编译器用于程序集(.Net程序集在默认情况下与体系结构无关,但可以强制编译为x86或x64)。 但由于windows安装程序是本机win32 exe,因此无法将其生成为“任何CPU”。
因此,您必须生成两个相同的安装程序,一个用于x86,另一个用于x64。这可以完成,但VS安装程序无法完成。我有一位同事通过InstallShield产品实现了这一点,但我要说的是,这是一个绝对的黑客行为,最终他得到了一个更好的结果,制作了两个不同的安装程序,每个目标位对应一个 我还需要告诉你: 在TargetPlatform属性中,我只有:x86、x64、安腾。我知道在某处还有一个叫做任何CPU
TargetPlatform
属性不会更改您正在安装的应用程序的位,您正在使它与程序集本身的目标平台混淆。MSI是运载工具,其中的.Net组件是有效载荷%PROGRAMFILES(x86)%
,不同的注册表配置单元将成为目标。可以这样做,但不能直接使用Visual Studio。通常的方法是:
- 创建包含32位和64位资源的通用MSI
- 创建(一个用于32位,一个用于64位)以基于目标平台修改MSI
- 使用EXE引导程序动态检测平台并对MSI应用正确的转换
如果这看起来太复杂,您可以简单地使用单独的32位和64位软件包。您部分正确-MSI不是一个可执行文件*,它实际上是一个由
msiexec.exe
读取和操作的数据库(*如果是“MSI”具有.exe
后缀。它是一个封装MSI的引导程序,引导程序是编译代码,但可以在64位系统上运行,不会出现任何问题)。