Создание проекта установки для оконного сервиса - PullRequest
2 голосов
/ 14 мая 2009

Что необходимо для создания проекта развертывания для службы Windows? Мне нужно удалить предыдущую версию службы перед установкой новой версии.

Ответы [ 5 ]

1 голос
/ 14 мая 2009

В MSDN есть учебник по созданию службы Windows и установщика.

0 голосов
/ 14 мая 2009

Если вы уже создали установщик, для проекта установки не нужно выполнять много дополнительной работы. Это позволит вам устанавливать и удалять непосредственно из Visual Studio. В Интернете есть хорошие учебники.

2 проблем, связанных со службой, с которыми вы столкнетесь, и способы их решения:

  • Вы удалили службу, но не можете переустановить ее, потому что вы получаете сообщение об ошибке, что служба ожидает удаления и требуется перезагрузка. => Закройте диспетчер служб Windows. Он освободит любые ссылки, и вы можете переустановить свой сервис.

  • Вы удалили исполняемый файл службы до того, как удалили его, и теперь вы не можете «удалить» его для очистки реестра. => У меня нет решения для этого, кроме как полностью избежать этого.

0 голосов
/ 14 мая 2009

Я использую NSIS для своих приложений, а для установки службы просто используйте команду sc:

ExecWait 'sc create MyService binpath= "$INSTDIR\MyService.exe"'
ExecWait 'sc start MyService'

И для удаления:

ExecWait 'sc stop MyService'
ExecWait 'sc delete MyService'

Отлично работает.

0 голосов
/ 14 мая 2009
  1. В Visual Studio перейдите к файлу службы (myservice.vb или myservice.cs) в вашем проекте службы.

  2. Щелкните правой кнопкой мыши представление дизайна и выберите свойства.

  3. В нижней части окна Porperties есть ссылка «Добавить установщик». Нажмите на нее.

  4. Проверьте свойства ServiceInstaller и ServiceProcessInstaller.

  5. Скомпилируйте ваш проект

  6. , чтобы удалить предыдущую версию, в командной строке запустите: Installutil.exe / u c: \ myfolder \ myservicefile.exe

  7. для установки в командной строке запустите: Installutil.exe c: \ myfolder \ myservicefile.exe

Вот и все.

Installutil.exe находится в папке framework, где-то в вашем каталоге Windows. Это не обязательно должно быть включено в ваш проект.

0 голосов
/ 14 мая 2009

Это просто звонок:

net stop "MyService"
intallutil.exe /u MyService.exe

// Copy your exe into place
installutil.exe MyNewService.exe

// optional
net start "MyService"

Это останавливает старую службу, удаляет ее, затем копирует новую на место, устанавливает и (необязательно) запускает ее.

Большинство инсталляторов делают это довольно легко. Единственный другой «уловка» - убедиться, что ваш установщик ограничен в установке на локальный диск, а не в сетевой путь, если служба будет установлена ​​для автоматического запуска при запуске.

...