.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-разрядную версию.