Какой самый простой способ обновить службу Windows .NET в рабочей среде? - PullRequest
8 голосов
/ 21 января 2010

Скажем, на сервере установлена ​​пользовательская служба Windows. Служба написана с использованием .NET и устанавливается с помощью InstallUtil, пакета MSI или ManagedInstallerClass (если это имеет значение, выберите тот, который решает проблему). Регулярно вам нужно будет вносить изменения в сервис, и, конечно, вы хотите сделать это как можно проще.

Безопасно ли просто останавливать службу, заменять файл .exe и перезапускать службу? Или вам придется удалить и переустановить с новым файлом .exe? Было бы проще, если бы «развивающаяся» часть сервиса была разделена на отдельную сборку? Существуют ли какие-либо инструменты или API, которые могут помочь при разработке или развертывании службы?

Ответы [ 3 ]

12 голосов
/ 21 января 2010

Я просто прекращаю обслуживание и заменяю exe; это безопасно.

Вы можете получить его, чтобы ваша служба начала загружать модули, и вы разрабатываете свою систему таким образом; это сработает, но может быть слишком сложным или нет, в зависимости от того, что именно вы хотите сделать.

5 голосов
/ 21 января 2010

Просто остановите службу, замените EXE и перезапустите его. Вероятно, это должно быть частью вашего установщика. Разделение его на отдельные сборки ради переустановки - это кроличья нора.

2 голосов
/ 21 января 2010

Для обновления услуг мы используем либо пакеты MSI (в случае, если мы все равно предоставляем установщик нашим клиентам), либо короткий скрипт, который обрабатывает остановку и удаление старой версии службы, а затем копирует, устанавливает и запускает новую версию.

Для сценариев развертывания локальных служб вы можете использовать стандартные команды Windows, такие как net start и net stop в сочетании с installutil, для удаленного развертывания вы можете, например, используйте psexecute и psservice от SysInternals.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...