.net InstallUtil实用程序 - 32位与64位的区别

16

我有一个编译为AnyCPU的Windows服务。我试图将其加入到我们的安装程序中以分发。然而... 我不清楚InstallUtil的32位和64位版本之间有什么区别,是否有人知道?

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

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

只有32位的InstallUtil适用于32位机器(显然)。

需要使用\Framework64\版的InstallUtil吗?它有什么不同的功能?

3个回答

16
根据这里的介绍,您应该使用64位版本来安装64位和MSIL程序集,但它并没有说明原因。
引用块中解释道,从.NET Framework 2.0版开始,公共语言运行时(CLR)的32位版本仅包含32位版本的Installer工具,而64位版本的CLR则同时包含32位和64位版本的Installer工具。使用64位CLR时,使用32位的Installer工具来安装32位程序集,使用64位的Installer工具来安装64位和Microsoft中间语言(MSIL)程序集。两个版本的Installer工具的行为相同。
我认为这里解释了原因。如果您查看帖子底部,它解释了两者之间的一些区别以及何时使用32位的intallutil。
引用块中解释道,Installutil.exe是为特定平台构建的,因此它将启动为32位或64位进程,并更新相关的注册表配置项。请注意,如果您使用平台开关构建的插件,则只能在32位或64位注册表配置项中注册它。

太好了,第二个解释了我有的一种直觉,但我无法确认。谢谢! - user199783

2

我也遇到了这个问题。我的VS2008项目设置为平台目标:任何CPU。无论我在64位操作系统上运行32位或64位的InstallUtil.exe,它都会安装为64位。

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


1
如果您要安装一个只支持64位的程序集,32位的InstallUtil将无法加载它。您需要使用64位版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接