我编写了一个继承自ServiceBase的抽象类"PollingServiceBase",以便编写具有覆盖方法Work的windows服务,该方法在构造函数中声明的计时器上执行。所以我试着测试它,我写了一个小类,每分钟写一行包括日期时间到一个文本文件。我需要安装这个服务,但当我不能使用设计器"添加安装程序",因为PollingServiceBase是抽象的。所以任何人都可以给我一个解决方案或指向我的资源,告诉我如何手动做到这一点?
只需在您的服务中添加一个新的代码:
ServiceInstaller installer = new ServiceInstaller();
确保你正确地使用属性。
为了更简单的方法,我建议查看TopShelf。它是一个编写Windows服务并使其通过F5可运行的很好的库。基本上,它是一个控制台应用程序。
这是关于TopShelf的一些信息:
http://topshelf-project.com/如果您仍然想坚持使用基本实现,这里有一些代码:
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());
}