System.ServiceProcess.ServiceBase,System.ServiceProcess.ServiceProcessInstaller,System.ServiceProcess.ServiceInstaller这三个类的具体关系是什么?都有什么用,
我刚刚学windows service,不是很理解,既然创建的新服务类继承了ServiceBase类,而且代码里面有重写原来的OnStart,OnStop或者其他基类方法那后面的2个类又有什么其他的用处?
后面2个我是在新服务类的设计视图中右键添加安装程序自动生成的

解决方案 »

  1.   

    当我们用installutil.exe MyDll.dll来注册一个服务的时候,installutil通过反射来检查MyDll.dll是否有ServiceProcessInstaller或它的衍生类,如果有,则调用它的某些特定方法来进行服务安装。虽然大部分情况下只有一个,实际上一个MyDll.dll可以包含多个服务。而不同的服务需要不同的名字,描述,运行帐号等等,这些可以通过多个ServiceInstaller来指定。至于为什么ServiceBase不管安装?实际上出自权责独立的设计原则 - 服务归服务,如何安装归别人管。比如有些安装项目象InstallShield等可以安装服务,那么ServiceProcessInstaller就不需要放到MyDll.dll里去了。
      

  2.   

    指你一条明路:MSDN