.net Утилита InstallUtil - 32 бит и 64 бит

У меня есть служба 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? Что он делает по-другому?

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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