Утилита .net InstallUtil - 32-разрядная или 64-разрядная

StackOverflow https://stackoverflow.com/questions/1650925

  •  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-битную версию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top