[英]InstallUtil gets stuck while installing service
我正在嘗試在管理員模式下使用installUtil.exe和以下命令安裝我自己的Windows服務。
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
當作為安裝的服務發布net start
時,該服務既不在服務查看器中也不在CLI中顯示。
以下是安裝程序和服務類代碼。
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...
}
}
}
Thread.Sleep(60001);
服務類(SubwaySync)中的這一行引起了延遲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.