Установка службы Windows с помощью sc.exe или installatil.exe - есть разница, но что?

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

Вопрос

Sc.exe а также Installutil Оба установки/удалите службы Windows. Но они, кажется, не работают так же.

В чем разница?


Например Installutil не удастся (какой -то файл или зависимость не найдена ошибка), пока SC Create К счастью, устанавливает сервис. Слишком добавить к странности; Сервис не появляется, если я бегу сеть старта в консоли. Но это появляется в графическом интерфейсе услуг. Варианты этого случаются, когда я пытаюсь удалить.

Я написал сервис сам и более ранние версии. Dotnet3.5.

Это было полезно?

Решение

Да, установка сервиса не особенно сложна. Это просто требует написания нескольких ключей реестра. Вы можете взглянуть на regedit.exe, перейдите к Hkey_local_machine System CurrentControlset Services.

SC.Exe также может написать эти ключи, используя аргументы предоставленной командной строки. Тем не менее, это не правильный способ сделать это. Точка stallingUtil.exe заключается в том, что он может активировать обычай Код установки. Код, который написал автор службы. Что не так редко, службы, как правило, вполняют информацию конфигурации в своих ключах регистрации для собственного использования. Вы увидите множество доказательств для этого, когда вы посмотрите с Regedit.

Другие советы

Я предпочитаю sc.exe по сравнению с installatil.exe миллион раз.

InstallUtil заставляет вас добавить ужасный класс ProjectInstaller (я полагаю) и хард -код там название услуги и описание службы.

Это очень сложно поставить две версии одной и той же сервиса, работающего в одном и том же машине одновременно.

Вот почему я просто не использую installtil.exe вообще. Также из -за предыдущих ответов: вам нужно, чтобы он был в вашем пакете развертывания. SC.Exe уже в любой Windows XP и выше (я полагаю).

Основное отличие в том, что Installutil не утилита, предназначенная для установки обслуживания, а как общий инструмент установщика. На страницах MSDN вы можете увидеть это:

«Инструмент установщика-это утилита командной строки, которая позволяет устанавливать и удалять ресурсы сервера путем выполнения компонентов установщика в указанных сборках. Этот инструмент работает в сочетании с классами в System.Configuration.Install именах».

Таким образом, он может установить сервис, но у него много других преимуществ. Создание исполняемых файлов в зависимости от Установитель класс дает вам программное управление всей процедурой установки/удаления. ServiceInstaller а также ServiceProcessInstaller, например, используются для установки обслуживания.

Утилита «SC» используется для управления обслуживанием, а команда «создать» будет просто создавать службу на основе выбранного исполняемого файла.

В вашем примере
1. Он не предназначен для установки с Installutil И ответ на ошибку должен быть совершенно ясным по этому поводу.
2. Installutil не удастся из -за ошибки в коде установки и использования SC Create Вероятно, создаст для вас неисправную услугу. Проверить {exe_name} .installlog Для деталей.

Из опыта использования удаления: sc.exe под Windows 7 Удаляет запись из списка немедленно, в то время как после удаления с помощью InstallUtil необходимо перезапуск

В то время как InstallUtil - это предпочтительный способ пойти с службами .NET, один из его недостатков заключается в том, что он не будет привлекать привязки с вашим App.config, что при определенных обстоятельствах может привести к выходу из строя. Вот где использование SC может принести вам некоторую выгоду, за счет невозможного запуска кода во время установки.

К сожалению для OP, Верхняя полка не было во время его вопроса. Он работает вокруг недостатков как SC, так и InstallUtil, и позволяет сервису начинать с прикрепленного отладчика при запуске его в Visual Studio. Кроме того, это намного проще набрать myservice install чем нужно сверлить до конкретной папки для установки, или введите тонну параметров для SC.

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