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 を使用する必要はありますか? それは何が違うのですか?

4

3 に答える 3

16

thisによると、64 ビット バージョンと MSIL アセンブリをインストールするには 64 ビット バージョンを使用することになっていますが、その理由は示されていません。

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

ここで理由が説明されていると思います。投稿の下部を見ると、2 つの違いと、32 ビットの intallutil をいつ使用するかが説明されています。

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

于 2009-10-30T16:46:30.577 に答える
2

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

プロジェクト設定のターゲットを x86 に変更し、32 ビットの installutil.exe を実行したところ、すべて正常に動作しました。タスク マネージャーに *32 フラグが表示されるようになりました。

于 2011-05-11T17:31:13.700 に答える
1

64 ビットのみのアセンブリをインストールする場合、32 ビットの InstallUtil はそれを読み込むことができません。64 ビット版を使用する必要があります。

于 2015-05-11T18:19:50.677 に答える