2017-10-18 104 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)引起的延遲。