c #: Как автоматически обновить сервис? - PullRequest
0 голосов
/ 24 мая 2018

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

У нас есть служба, которая устанавливается через Microsoft Visual Studio 2017 Projects Installer Projects.Я предполагаю, что для обновления службы мне нужен дополнительный инструмент, который выполняет следующие действия:

  1. Остановить службу (или лучше сделать так, чтобы служба сама проверяла обновления и сама останавливалась?)
  2. Скопируйте новые файлы в папку установки
  3. Позвоните installutil.exe MyUpdatedService.exe (или это устарело, если служба обновлена?)
  4. Запустите службу

У нас уже есть инструмент для шагов 1., 2. и 4. для обычных приложений.Нужно ли реализовывать ServiceController Class для взаимодействия со службой или любая программа может запускать / останавливать службу?

1 Ответ

0 голосов
/ 25 мая 2018

Если вам нужно внешнее приложение на c #, вам нужно ServiceController.Вы можете остановить службу изнутри службы, но не сможете запустить ее впоследствии.

Вам не нужно обновлять регистрацию службы после ее регистрации, вам нужно только заменить двоичные файлы службы.

  1. Переименовать старые двоичные файлы службы, когда служба все еще работает
    • Не уверен, возможно ли это во всех версиях Windows, также необходимо переименовать.
  2. Скопировать новую версию под оригинальным именем
  3. Перезапустите службу

    • Это приведет к выгрузке старой версии и загрузке новой.
    • Прерывание службы - самое короткое из возможных.
  4. Очистить старую версию

    • После остановки старой версии вы сможете удалить старые двоичные файлы.
...