.net InstallUtilユーティリティ-32ビットと64ビット
-
22-07-2019 - |
質問
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ビットバージョンを使用する必要があります。