Утилита .net InstallUtil - 32-разрядная или 64-разрядная
-
22-07-2019 - |
Вопрос
У меня есть служба 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? Что это делает по-другому?
Решение
Согласно этому , вы должны использовать 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-разрядный).
Другие советы
Я тоже столкнулся с этим. Проблема заключалась в том, что мой проект VS2008 был настроен на платформу Цель: любой процессор. Независимо от того, какой InstallUtil.exe (32 или 64) я запускал на 64-битной ОС, он устанавливался как 64-битная. Р>
Я изменил настройки проекта Target на x86, а затем запустил 32-битный installutil.exe, и все работает нормально. Теперь он показывает флаг * 32 в диспетчере задач.
Если вы устанавливаете только 64-битную сборку, 32-битная InstallUtil не сможет ее загрузить. Вам нужно будет использовать 64-битную версию.