2009-10-30 18 views
13

AnyCPUとしてコンパイルされたWindowsサービスがあります。私は配布するために私たちのインストーラにそれを取得しようとしています。しかし、私はInstallUtilの32ビット版と64ビット版の違いについてはっきりしていません。誰もが何か(もしあれば)を知っていますか?.net InstallUtilユーティリティ - 32ビットと64ビット

私の64ビットマシンでは、$(WinDir)\ Microsoft.NET \ Framework64 \ v2.0.50727または$(WinDir)\ Microsoft.NET \ Framework \ v2.0.50727のいずれかを実行できます。

いずれの場合も、タスクマネージャの結果として得られるサービスプロセスには* 32フラグが適用されません。

32ビットのInstallUtilのみが32ビットマシンで動作します(明らかに)。

InstallUtilの\ Framework64 \版を使用する必要はありますか?それはどういうふうに違いますか?

答えて

14

thisによれば、64ビット版を使用して64ビットとMSILのアセンブリをインストールすることになっていますが、理由は言いません。

.NET Frameworkバージョン2.0以降で、 の32ビットバージョンの共通言語ランタイム(CLR)インストーラツールの唯一の32ビットバージョン に付属するが、64ビット版CLRは、 のインストーラツールの32ビットバージョンと64ビットバージョンの両方で出荷されています。 64ビットCLRを使用する場合は、32ビットインストーラツールを使用して32ビットの アセンブリをインストールし、64ビットインストーラツールを使用して64ビットおよび Microsoft中間言語(MSIL)アセンブリをインストールします。両方のバージョンの インストーラツールは同じように動作します。

私はhereが理由を説明すると信じています。ポストの一番下を見ると、2つの違いと32ビットのintallutilを使うタイミングの違いが説明されています。

Installutil.exeは、したがって、それが 32または64ビットプロセスとして開始され、関連するレジストリハイブが 更新され、特定のプラットフォーム用に構築されています。プラットフォーム スイッチで構築されたスナップインを使用している場合は、ハイブ (32ビットまたは64ビット)のいずれかでのみ登録できます。

+0

パーフェクト、それは私が持っていたが、確認することができなかった勘違いを説明します。ありがとう! –

2

これも同様に実行されました。問題は私のVS2008プロジェクトがPlatform Target:任意のCPUに設定されていたことです。どのInstallUtil.exe(32または64)を64ビットOSで実行しても、64ビットとしてインストールしていました。

ターゲットをx86に設定してから、32ビットのinstallutil.exeを実行しても問題ありません。これで、タスクマネージャーに* 32フラグが表示されます。

1

64ビットのみのアセンブリをインストールしている場合、32ビットのInstallUtilはそれをロードできません。 64ビットバージョンを使用する必要があります。

関連する問題