2017-01-06 7 views
3

Я добавил два ServiceInstallers в свой ServiceProcessInstaller. После этого я haved изменил мой Main(), как показано ниже:Несколько ServiceInstaller в одном ServiceProcessInstaller в службах Windows

static void Main() 
    { 
     ServiceBase[] ServicesToRun; 
     ServicesToRun = new ServiceBase[] 
     { 
      new Service1(), 
      new Service2()     
     }; 
     ServiceBase.Run(ServicesToRun); 
    } 

Я также установить Service2 в качестве зависимой службы по Service1, как показано ниже:

private void InitializeComponent() 
    { 
     this.Service1ProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller(); 
     this.Service1Installer = new System.ServiceProcess.ServiceInstaller(); 
     this.Service2Installer = new System.ServiceProcess.ServiceInstaller(); 
     // 
     // Service1ProcessInstaller 
     // 
     this.Service1ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 
     this.Service1ProcessInstaller.Password = null; 
     this.Service1ProcessInstaller.Username = null; 
     // 
     // Service1Installer 
     // 
     this.Service1Installer.ServiceName = "Service1"; 
     this.Service1Installer.ServicesDependedOn = new string[] {"Service2"}; 
     // 
     // Service2Installer 
     // 
     this.Service2Installer.ServiceName = "Service2"; 
     // 
     // ProjectInstaller 
     // 
     this.Installers.AddRange(new System.Configuration.Install.Installer[] { 
     this.Service1ProcessInstaller, 
     this.Service1Installer, 
     this.Service2Installer}); 

    } 

еще только работает мой Service1.

Service2 никогда не звонит.

И если я изменяю последовательность в Main(), то Service2 только вызывает.

Он всегда вызывает первое обслуживание.

Как позвонить мне обеим службам?

+0

Если вы открываете 'services.msc', у вас есть две службы? – zaitsman

+0

@zaitsman Нет У меня нет. Он показывает только myService.exe –

ответ

0

Я нашел решение. Проблема заключалась не в зависимой службе, связанной с моей деинсталляцией. Я удалил свою службу, а затем снова установил ее, а затем обнаружил обе службы в моем Services.msc.

Мы нуждаемся в зависимой службе, когда они на самом деле зависят друг от друга, поэтому я также удалил зависимый служебный код.

Теперь я могу запустить их вручную. и оба они работают. Ниже мой код успешно работает.

static void Main() 
{ 
    ServiceBase[] ServicesToRun; 
    ServicesToRun = new ServiceBase[] 
    { 
     new Service1(), 
     new Service2()     
    }; 
    ServiceBase.Run(ServicesToRun); 
} 
private void InitializeComponent() 
{ 
    this.Service1ProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller(); 
    this.Service1Installer = new System.ServiceProcess.ServiceInstaller(); 
    this.Service2Installer = new System.ServiceProcess.ServiceInstaller(); 
    // 
    // Service1ProcessInstaller 
    // 
    this.Service1ProcessInstaller.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 
    this.Service1ProcessInstaller.Password = null; 
    this.Service1ProcessInstaller.Username = null; 
    // 
    // Service1Installer 
    // 
    this.Service1Installer.ServiceName = "Service1"; 
    // 
    // Service2Installer 
    // 
    this.Service2Installer.ServiceName = "Service2"; 
    // 
    // ProjectInstaller 
    // 
    this.Installers.AddRange(new System.Configuration.Install.Installer[] { 
    this.Service1ProcessInstaller, 
    this.Service1Installer, 
    this.Service2Installer}); 

}