删除安装程序的Windows服务不起作用

时间:2014-06-05 07:31:54

标签: c# windows-installer

我正在尝试卸载Windows服务,但我收到以下消息。

enter image description here

所以我认为好了它被删除了。但当我检查我的服务窗口时,它仍然在那里..任何人都知道我做错了什么?我将在下面附上我的代码。

[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
    public ErrorLogging errLog { get; set; }
    public ProjectInstaller()
    {
        errLog = new ErrorLogging();
        InitializeComponent();
    }

    protected override void OnBeforeInstall(IDictionary savedState)
    {
        base.OnBeforeInstall(savedState);

        try
        {
              /* Some folder creation happens here */
        }
        catch (InstallException ex)
        {
            errLog.WriteToErrorLog(ex.Message, ex.StackTrace, "Creating directories failed");
        }
    }
    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
    }

    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
    }
}

我尝试过:

  • 重新启动
  • 删除安装程序类,但MSI安装程序不执行检查

3 个答案:

答案 0 :(得分:1)

MSI不会进行任何检查,因为您正在退出流程而不使用本机MSI功能。如果使用内置的ServiceInstall和ServiceControl表而不是重新发明轮子,安装程序将更简单可靠。

答案 1 :(得分:0)

假设您的问题与代码无关,并且您只是想从该计算机中删除该服务:

  1. 可能需要提升命令提示符(如果您不知道如何打开它,here's how)。
  2. 如果这没有帮助,则会有服务删除命令:

    sc delete ServiceName

答案 2 :(得分:0)

从代码中可以看出,您只想卸载,但如果您使用InstallUtil,它无论出于何种原因都会失败。

但是还有其他解决方案可以删除服务:

选项1:(sc.exe)

打开命令提示符(您可能需要以管理员身份打开它并执行:

sc delete ServiceName

注意:如果您的服务名称包含一些间隔,则需要将其包装起来:

sc delete "My service name with spaces"

选项2 :(注册表)

打开注册表并导航至: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

在此处查找您的服务,将其删除并重启系统。

这是您必须在不使用InstallUtil

的情况下删除服务的两个选项