質問

AnyCPUとしてコンパイルされたWindowsサービスがあります。インストーラーに配布して配布しようとしています。ただし... InstallUtilの32ビットバージョンと64ビットバージョンの違いについては不明です。誰かが(もしあれば)知っていますか?

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

どちらの場合も、タスクマネージャーで生成されるサービスプロセスには* 32フラグが適用されません。

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

InstallUtilの\ Framework64 \バージョンを使用する必要はありますか?どう違うのですか?

役に立ちましたか?

解決

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

  

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

こちらが理由を説明していると思います。投稿の最後を見ると、この2つと32ビットのintallutilを使用するタイミングの違いについて説明しています。

  

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

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top