如何在windows服务中手动添加安装程序



我编写了一个继承自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());
}

最新更新