Утилита .net InstallUtil - 32-разрядная или 64-разрядная - PullRequest
15 голосов
/ 30 октября 2009

У меня есть служба Windows, скомпилированная как AnyCPU. Я пытаюсь получить его в наш установщик для распространения. Однако ... Мне неясно, в чем разница между 32-битной и 64-битной версиями InstallUtil. Кто-нибудь знает, что (если таковые имеются) есть?

На моей 64-битной машине я могу запустить либо $ (WinDir) \ Microsoft.NET \ Framework64 \ v2.0.50727, либо $ (WinDir) \ Microsoft.NET \ Framework \ v2.0.50727.

В обоих случаях результирующий сервисный процесс в диспетчере задач не имеет установленного флага * 32.

Только 32-битный InstallUtil работает на 32-битных машинах (очевидно).

Есть ли необходимость использовать \ Framework64 \ версию InstallUtil? Что это делает по-другому?

Ответы [ 3 ]

15 голосов
/ 30 октября 2009

Согласно это , вы должны использовать 64-битную версию для установки 64-битных сборок и сборок MSIL, но это не говорит, почему.

Начиная с .NET Framework версии 2.0, 32-разрядная версия общеязыковая среда выполнения (CLR) поставляется только с 32-битной версией инструмента Installer, но 64-битная версия CLR поставляется с 32-разрядные и 64-разрядные версии инструмента Installer. При использовании 64-разрядный CLR, используйте 32-разрядный инструмент установщика для установки 32-разрядного сборки и 64-разрядный инструмент установщика для установки 64-разрядных и Промежуточные языковые сборки Microsoft (MSIL). Обе версии Установщик инструмента ведет себя так же.

Я верю здесь объясняет почему. Если вы посмотрите внизу поста, он объяснит некоторые различия между ними и тем, когда следует использовать 32-битный intallutil.

Installutil.exe создан для конкретной платформы, поэтому он будет начинаться как 32- или 64-разрядный процесс, и соответствующий куст реестра будет обновлено. Обратите внимание, что если у вас есть встроенная оснастка с платформой переключить, вы сможете зарегистрировать его только в одном из ульев (32-разрядный или 64-разрядный).

2 голосов
/ 11 мая 2011

Я тоже столкнулся с этим. Проблема заключалась в том, что мой проект VS2008 был настроен на платформу Цель: любой процессор. Независимо от того, какой InstallUtil.exe (32 или 64) я запускал на 64-битной ОС, он устанавливался как 64-битная.

Я изменил настройки проекта Target на x86, а затем запустил 32-битный installutil.exe, и все работает нормально. Теперь он показывает флаг * 32 в диспетчере задач.

1 голос
/ 11 мая 2015

Если вы устанавливаете только 64-битную сборку, 32-битная InstallUtil не сможет ее загрузить. Вам нужно будет использовать 64-битную версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...