Я написал абстрактный класс "PollingServiceBase", который наследует от ServiceBase, чтобы написать службу Windows, у которой был метод переопределения Работа, выполняемая по таймеру, объявленному в конструкторе. Поэтому я пытаюсь проверить это, и я написал быстрый маленький класс, который каждую минуту записывает строку, включая datetime, в текстовый файл. Мне нужно установить эту службу, но когда я не могу использовать конструктор для "Add Installer", потому что PollingServiceBase является абстрактным. Так может ли кто-нибудь дать мне обходной путь или указать мне на ресурс, который показывает мне, как это сделать вручную?
Просто добавьте новый код в свою службу по коду:
ServiceInstaller installer = new ServiceInstaller();
И убедитесь, что вы правильно используете свойства.
Для более легкого способа я рекомендую посмотреть TopShelf. Это хорошая библиотека, чтобы написать службу Windows и сделать ее доступной через F5. По сути, это консольное приложение.
Вот некоторая информация о TopShelf:
Если вы все еще хотите придерживаться базовой реализации, вот какой код:
using (TransactedInstaller installer = new TransactedInstaller())
{
string path = string.Format("/assemblypath={0}",
System.Reflection.Assembly.GetExecutingAssembly().Location);
string[] arguments = { path };
InstallContext context = new InstallContext("", arguments);
using (ProjectInstaller projectInstaller = new ProjectInstaller())
{
installer.Installers.Add(projectInstaller);
}
installer.Context = context;
installer.Install(new Hashtable());
}