我需要构建一个 Windows 服务来监视“主”应用程序。所以,我搜索了很多,找到了开始使用服务所需的代码。
private IContainer componentsContainer;
private EventLog eventLog;
public ServiceMain()
{
InitializeComponent();
eventLog = new EventLog();
if(!EventLog.SourceExists("TestWindowsService"))
EventLog.CreateEventSource("TestWindowsService", "Checks");
eventLog.Source = "TestWindowsService";
eventLog.Log = "Checks";
}
protected override void OnStart(string[] args)
{
var timer = new Timer {Interval = 60000};
timer.Elapsed += OnTimer;
timer.Start();
}
protected void OnTimer(object sender, ElapsedEventArgs e)
{
// checks here
}
protected override void OnStop()
{
// {...}
// eventually, delete all the chunk we collected during the process
}
我对安装程序的唯一更改是描述、显示名称、服务名称和启动类型设置为manual
. 这是安装
Microsoft (R) .NET Framework 安装实用程序版本 4.6.1586.0 版权所有 (C) Microsoft Corporation。版权所有。
运行事务安装。
开始安装的安装阶段。查看 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe 程序集进度的日志文件内容。该文件位于 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog。安装程序集“E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe”。受影响的参数有:logtoconsole = logfile = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog 汇编路径 = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks .exe 正在安装服务 ZBMS... 服务 ZBMS 已成功安装。在日志应用程序中创建 EventLog 源 ZBMS...
安装阶段发生异常。System.ArgumentException:源 ZBMS 已存在于本地计算机上。
安装的回滚阶段即将开始。查看 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe 程序集进度的日志文件内容。该文件位于 E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog。回滚程序集 'E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.exe'。受影响的参数有:logtoconsole = logfile = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks.InstallLog 汇编路径 = E:\Dev\ZBMS 1.0\ZBMS.Checks\bin\Debug\ZBMS.Checks .exe 将事件日志恢复到源 ZBMS 的先前状态。服务 ZBMS 正在从系统中删除... 服务 ZBMS 已成功从系统中删除。
回滚阶段成功完成。
事务安装已完成。安装失败,已回滚。
我尝试了什么:
- 安装 Windows 服务时出现问题(ryber 的解决方案对我不起作用,因为 Visual Studio 找不到引用的方法
FindInstaller
)
我很难解决这个问题。