2017-10-18 25 views
0

J'essaye d'installer mon propre service Windows en utilisant installUtil.exe avec la commande suivante en mode Administrateur.InstallUtil est bloqué pendant l'installation du service

InstallUtil C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe

je reçois la sortie suivante en tant que cmd et l'installation est bloqué à droite là.

----------------------------------- Installing Service. 
Microsoft (R) .NET Framework Installation utility Version 4.7.2046.0 
Copyright (C) Microsoft Corporation. All rights reserved. 


Running a transacted installation. 

Beginning the Install phase of the installation. 
See the contents of the log file for the C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe assembly's progress. 
The file is located at C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.InstallLog. 
Installing assembly 'C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe'. 
Affected parameters are: 
    logtoconsole = 
    logfile = C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.InstallLog 
    assemblypath = C:\Users\Admin\Desktop\Subway_sync\SubwaySync\SubwaySync\bin\Debug\SyncSQL.exe 

Le service montre ni dans la visionneuse de services ni CLI lors de son émission net start comme un service installé.

Voici le code de l'installateur et de la classe de service.

using System.ComponentModel; 
using System.ServiceProcess; 

namespace SubwaySync 
{ 
    [RunInstaller(true)] 
    public partial class Installer : System.Configuration.Install.Installer 
    { 
     private ServiceInstaller serviceInstaller; 
     private ServiceProcessInstaller processInstaller; 

     public Installer() 
     { 
      // Instantiate installers for process and services. 
      processInstaller = new ServiceProcessInstaller(); 
      serviceInstaller = new ServiceInstaller(); 

      // The services run under the system account. 
      processInstaller.Account = ServiceAccount.LocalSystem; 

      // The services are started manually. 
      serviceInstaller.StartType = ServiceStartMode.Automatic; 

      // ServiceName must equal those on ServiceBase derived classes. 
      serviceInstaller.ServiceName = "SyncSQL"; 

      // Add installers to collection. 
      Installers.Add(serviceInstaller); 
      Installers.Add(processInstaller); 
      InitializeComponent(); 
     } 
    } 

    public partial class SubwaySync : ServiceBase 
    { 
     EventLog e = new EventLog(); 
     private System.Timers.Timer _timer; 

     public SubwaySync() 
     { 
      InitializeComponent(); 

      if (!System.Diagnostics.EventLog.SourceExists("DoDyLogSourse")) 
       System.Diagnostics.EventLog.CreateEventSource("DoDyLogSourse", "DoDyLog"); 

      e.Source = "DoDyLogSourse"; 
      // the event log source by which 
      //the application is registered on the computer 

      e.Log = "DoDyLog"; 
      Thread.Sleep(60001); 
     } 
     protected override void OnStart(string[] args) 
     { 
      _timer = new System.Timers.Timer(TimeSpan.FromMinutes(1).TotalMilliseconds); // 10 minutes expressed as milliseconds 
      _timer.Elapsed += new ElapsedEventHandler(OnTimerElapsed); 
      _timer.AutoReset = true; 
      _timer.Start(); 
     } 

     protected override void OnStop() 
     { 
      _timer.Stop(); 
      _timer.Dispose(); 
     } 

     private void OnTimerElapsed(object sender, ElapsedEventArgs e) 
     { 
      // Do your work here... 
     } 
    } 
} 
+1

Pouvez-vous s'il vous plaît poster la commande que vous utilisez pour installer? –

+1

Avez-vous exécuté l'invite de commande en mode Administrateur? –

+0

Oui, Question mise à jour. –

Répondre

0
Thread.Sleep(60001); 

Cette ligne en classe de service (SubwaySync) a causé le retard.