在从c#代码安装Windows服务之前检查它是否已经安装

本文关键字:安装 检查 是否 代码 Windows 服务 在从 | 更新日期: 2023-09-27 18:07:29

我正在学习Windows服务
我使用安装项目安装Windows服务
修改了Windows服务中的代码
现在,在项目安装程序的构造函数方法中,我正在检查服务是否已经通过

安装
 ServiceController[] sc = ServiceController.GetServices();
        foreach (ServiceController service in sc)
            if (service.ServiceName == "VService") { flag = false; break; }
            else flag = true;
        if (flag)
        {
            ServiceInstaller ServiceInstallerObj = new ServiceInstaller();
            InstallContext Context = new InstallContext();
            ServiceInstallerObj.Context = Context;
            ServiceInstallerObj.ServiceName = "VService";
            ServiceInstallerObj.Uninstall(null);
        }

但我猜这不是卸载Windows服务,因为当我在属性窗口中更改安装项目的版本并运行在项目构建上生成的安装程序时,我得到一个错误,该服务无法启动,因为它已经在运行,任何人都可以告诉我解决这个问题的方法或其他方法,这可以做到。由于

在从c#代码安装Windows服务之前检查它是否已经安装

您需要使用这样的代码:

using System.ServiceProcess;
ServiceController sc = new ServiceController(SERVICENAME);
switch (sc.Status)
{
    case ServiceControllerStatus.Running:
        return "Running";
    case ServiceControllerStatus.Stopped:
        return "Stopped";
    case ServiceControllerStatus.Paused:
        return "Paused";
    case ServiceControllerStatus.StopPending:
        return "Stopping";
    case ServiceControllerStatus.StartPending:
        return "Starting";
    default:
        return "Status Changing";
}

状态标志将告诉您服务是否正在运行

ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });