2017-10-18 106 views
0

我试图在管理员模式下使用installUtil.exe使用以下命令安装我自己的Windows服务。InstallUtil在安装服务时卡住

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

我得到以下的CMD输出和安装卡在那里。

----------------------------------- 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 

该服务表示既不在服务观众也不在CLI发出net start作为安装服务时。

以下是安装程序和服务类代码。

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

你可以请你发布你用来安装的命令吗? –

+1

您是否在管理员模式下运行命令提示符? –

+0

是的,问题更新。 –

回答

0
Thread.Sleep(60001); 

这条线服务类(SubwaySync)引起的延迟。