Существует множество примеров того, как установить службу Windows в одну строку:
ManagedInstallClass.InstallHelper(
new[] { Assembly.GetExecutingAssembly().Location });
Это прекрасно работает, пока класс обслуживания не объявлен в модуле exe.Но тот же код не работает для меня, если класс обслуживания находится в ссылочной сборке (не объявлено в исполняемом файле, но в связанной DLL).
В таком случае служба также регистрируется, но не может быть запущена, так как она зарегистрирована с помощью пути dll и указывает на dll (сообщение «служба не является исполняемым файлом win32» появляется в журнале событий, когда я пытаюсьначните с этого)
Если я изменю GetExecutingAssembly().Location
на путь к исполняемому файлу, установщики не будут найдены и служба вообще не будет зарегистрирована.
Можно ли поместить класс обслуживания в указанную сборку и при этом иметь возможность зарегистрировать службу с минимальными усилиями?
Заранее спасибо!