.net InstallUtil实用程序 - 32位对64位

时间:2009-10-30 16:35:04

标签: .net 64-bit installutil

我有一个编译为AnyCPU的Windows服务。我正试图将它放入我们的安装程序中进行分发。但是......我不清楚32位和64位版本的InstallUtil之间的区别。有谁知道有什么(如果有的话)?

在我的64位机器上,我可以运行$(WinDir)\ Microsoft.NET \ Framework64 \ v2.0.50727或$(WinDir)\ Microsoft.NET \ Framework \ v2.0.50727。

在这两种情况下,任务管理器中生成的服务进程都没有应用* 32标志。

只有32位的InstallUtil才能在32位计算机上运行(显然)。

是否需要使用\ Framework64 \版本的InstallUtil?它有什么不同的做法?

3 个答案:

答案 0 :(得分:15)

根据this,您应该使用64位版本来安装64位和MSIL程序集,但它没有说明原因。

  

从.NET Framework 2.0版开始,32位版本的   公共语言运行库(CLR)仅附带32位版本   安装程序工具,但CLR的64位版本附带   安装程序工具的32位和64位版本。使用时   64位CLR,使用32位安装程序工具安装32位   程序集和64位安装程序工具安装64位和   Microsoft中间语言(MSIL)程序集。两个版本的   安装程序工具的行为相同。

我相信here解释了原因。如果您查看帖子的底部,它会解释两者之间的差异以及何时使用32位intallutil。

  

Installutil.exe是为特定平台构建的,因此它会   从32或64位进程开始,相关的注册表配置单元将是   更新。请注意,如果您使用平台构建了管理单元   切换,您只能在其中一个配置单元中注册   (32位或64位)。

答案 1 :(得分:2)

我也遇到了这个问题。问题是我的VS2008项目被设置为Platform Target:Any CPU。无论我在64位操作系统上运行哪个InstallUtil.exe(32或64),它都安装为64位。

我将项目设置Target更改为x86,然后运行32位installutil.exe,一切正常。它现在在任务管理器中显示* 32标志。

答案 2 :(得分:1)

如果您要安装仅64位的程序集,则32位InstallUtil将无法加载它。您需要使用64位版本。