2016-04-05 5 views
0

Ich brauche einen Service programmatisch zu installieren (es sogar mit InstallUtil getan werden kann, aber es kann nicht manuell erfolgen)einen Windows-Dienst mit exe Pfad in C# Installation

Ich habe den folgenden Code kann aber nicht finde heraus, wie es richtig gemacht wird, da dieser Code nach einigen Klasseninformationen fragt, die ich nicht kenne und ich muss wissen, wie man es benutzt, um es mit der .exe auszuführen. Der Code ist wie folgt:

public static void InstallService(string ExeFilename) 
{ 
    System.Configuration.Install.AssemblyInstaller Installer = new System.Configuration.Install.AssemblyInstaller(ExeFilename,null); 
    Installer.UseNewContext = true; 
    Installer.Install(null); 
    Installer.Commit(null); 
} 
+0

Hat der Serviceparameter erhalten? –

+0

Dieser Code funktioniert mit einem einfachen Windows-Dienst, den ich habe. Was ist das Problem? –

+0

System.Configuration.Install.AssemblyInstaller Installer = Neu System.Configuration.Install.AssemblyInstaller (ExeFilename, null); , dass null was darstellt? weil es etwas über eine Befehlszeile sagt. Ich brauche das mit dem Pfad zu der .exe des Dienstes zu arbeiten –

Antwort

0
public void InstallService(string ExeFilename) 
     { 
      try 
      { 
       System.Configuration.Install.AssemblyInstaller Installer = new System.Configuration.Install.AssemblyInstaller(ExeFilename, null); 
       Installer.UseNewContext = true; 
       Installer.Install(null); 
       Installer.Commit(null); 
       DialogResult NovoDialog = new DialogResult(); 
       NovoDialog = MessageBox.Show("Deseja Iniciar o Serviço?", "Orca ++ Updater", MessageBoxButtons.YesNo); 
       if (NovoDialog == DialogResult.Yes) 
       { 
        ServiceController service = new ServiceController("OrcaService"); 
        TimeSpan timeout = TimeSpan.FromMilliseconds(1500); 
        service.Start(); 
        service.WaitForStatus(ServiceControllerStatus.Running, timeout); 

       } 
      } 
      catch (Exception ex) 
      { 
       Erro NovoErro = new Erro(); 
       Program.Erro = ex.ToString(); 
       NovoErro.ShowDialog(); 
      } 
     } 

Dies ist, wie ich es solveed