C# 删除安装程序的windows服务不起作用
我正在尝试卸载windows服务,但收到以下消息 所以我想好了,它被删除了。但当我检查我的服务窗口时,它仍然在那里。。有人知道我做错了什么吗?我将在下面附上我的代码C# 删除安装程序的windows服务不起作用,c#,windows-installer,C#,Windows Installer,我正在尝试卸载windows服务,但收到以下消息 所以我想好了,它被删除了。但当我检查我的服务窗口时,它仍然在那里。。有人知道我做错了什么吗?我将在下面附上我的代码 [RunInstaller(true)] public partial class ProjectInstaller : System.Configuration.Install.Installer { public ErrorLogging errLog { get; set; } public ProjectI
[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安装程序不执行我的检查
sc删除ServiceName
从您的代码中可以看出,您只是想卸载,但如果使用InstallUtil,无论出于何种原因,它都会失败 但有其他解决方案可以删除服务: 选项1:(sc.exe) 打开命令提示符(您可能需要以管理员身份打开它并执行:
sc delete ServiceName
注意:如果服务名称包含一些空格,则需要将其换行:
sc delete "My service name with spaces"
选项2:(Regedit)
打开注册表并导航到:HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Services
在此处找到您的服务,删除它并重新启动系统
这是两个选项,您必须在不使用InstallUtil的情况下删除服务。MSI不做任何检查,因为您正在退出进程,并且不使用本机MSI功能。如果您使用内置的ServiceInstall和ServiceControl表,而不是重新发明轮子,安装程序将更简单、更可靠。您是否需要你的错误日志记录是否一直有效?因为如果它崩溃了…那么,它会崩溃。除了日志记录之外,你的所有内容都在尝试捕获中。是的,我在错误日志中做了我能想到的所有检查,这样我就不会崩溃代码中有一个错误,表明卸载可能拾取了不正确的savedstate文件。另一个pos卸载失败的可能原因是你需要先停止它的运行。你知道为什么它不能用InstallUitl删除吗?我从过去的it中确实记得,当服务窗口打开时,它可能会失败。但我暂时无法测试。谢谢你的帮助只是出于好奇,有什么帮助?sc.exe或regedit或clos使用InstallUtil?sc.exe卸载服务时关闭服务窗口会有所帮助,但在尝试卸载服务时关闭了服务窗口