2009-10-30 8 views
13

Ich habe einen Windows-Dienst als AnyCPU kompiliert. Ich versuche, es in unseren Installer zu verteilen. Allerdings ... Ich bin unklar über den Unterschied zwischen den 32-Bit- und 64-Bit-Versionen von InstallUtil. Weiß jemand was (wenn überhaupt) da ist?.net InstallUtil Dienstprogramm - 32 Bit vs 64 Bit

Auf meiner 64-Bit-Maschine kann ich entweder das $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727 oder das $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727 ausführen.

In beiden Fällen wird dem resultierenden Dienstprozess im Task-Manager das Flag * 32 nicht zugewiesen.

Nur 32-Bit-InstallUtil funktioniert auf 32-Bit-Maschinen (natürlich).

Muss die \ Framework64 \ -Version von InstallUtil verwendet werden? Was macht es anders?

Antwort

14

Nach , Sie sollen die 64-Bit-Version verwenden, um 64-Bit- und MSIL-Assemblys zu installieren, aber es sagt nicht warum.

Ab .NET Framework, Version 2.0, die 32-Bit-Version von die Common Language Runtime (CLR) Schiffen nur mit der 32-Bit-Version des Installer-Tool, aber die 64-Bit-Version von Die CLR wird mit sowohl 32-Bit- als auch 64-Bit-Versionen des Installer-Tools ausgeliefert. Verwenden Sie bei Verwendung der 64-Bit-CLR das 32-Bit-Installationstool zum Installieren von 32-Bit-Assemblierungs-Assemblys mit und das 64-Bit-Installationstool zum Installieren von MSIL-Assemblies (64-Bit und ). Beide Versionen des Installer-Tools verhalten sich gleich.

Ich glaube here erklärt warum. Wenn Sie auf den unteren Rand des Posts schauen, erklärt es einige Unterschiede zwischen den beiden und wann das 32-Bit-Intallutil zu verwenden ist.

Installutil.exe für eine bestimmte Plattform gebaut wird, deshalb wird es beginnen als 32- oder 64-Bit-Prozess und die damit verbundene Registrierungsstruktur wird aktualisiert. Wenn Sie ein Snap-In mit dem Plattform-Switch haben, können Sie es nur in einem der Hives (32-Bit oder 64-Bit) registrieren.

+0

Perfekt, diese zweite erklärt eine Ahnung, die ich hatte, konnte aber nicht bestätigen. Vielen Dank! –

2

Ich lief auch über diese. Das Problem war, dass mein VS2008-Projekt auf Platform Target gesetzt wurde: Any CPU. Egal, welche InstallUtil.exe (32 oder 64) ich auf dem 64-Bit-Betriebssystem lief, das es als 64-Bit installierte.

Ich änderte meine Projekteinstellung Ziel auf x86 und dann lief die 32-Bit-installutil.exe und alles funktioniert gut. Es zeigt jetzt das * 32-Flag im Task-Manager.

1

Wenn Sie nur eine 64-Bit-Assembly installieren, kann die 32-Bit-InstallUtil diese nicht laden. Sie müssen die 64-Bit-Version verwenden.

Verwandte Themen