我一直在尝试使用installutil安装Windows服务:installutil /u GSIS.FileMoverService.exe
。
我得到的输出是:
卸载程序集“C:\ FMS \ GSIS.FileMoverService.exe”。受影响的参数是:
logtoconsole = logfile = C:\ FMS \ GSIS.FileMoverService.InstallLog
assemblypath = C:\ FMS \ GSIS.FileMoverService.exe正在删除EventLog源文件移动器服务。
警告:源文件移动器服务未在本地计算机上注册。服务文件移动器服务正在从系统中删除......
卸载System.ServiceProcess.ServiceInstaller安装程序期间发生异常。 System.ComponentModel.Win32Exception:指定的服务不作为已安装的服务存在卸载时发生异常。
此异常将被忽略,卸载将继续。但是,卸载完成后可能无法完全卸载应用程序。
尝试卸载时服务已停止。它绝对是注册为服务。我重新启动了它,它仍然可以在服务小程序(services.msc)中看到。它还可以从“服务”小程序成功启动和停止,因此它看起来不会成功(或仅部分)安装。
我从VS2010命令提示符调用installutil(单击“以管理员身份运行”)。
有什么想法吗?
答案 0 :(得分:13)
最后,我使用sc delete GSIS.FileMoverService
删除了该服务。这很有用。
答案 1 :(得分:3)
所以我希望这与扩展System.Configuration.Install.Installer的类有关。在类的构造函数中,您需要将System.ServiceProcess.ServiceProcessInstaller和System.ServiceProcess.ServiceInstaller添加到安装程序中,如:
public MyServiceInstaller(string displayName = null, string description = null, ServiceAccount account = ServiceAccount.LocalSystem, string username = "", string password = "", ServiceStartMode startType = ServiceStartMode.Automatic, bool delayedAutoStart = false, string[] servicesDependedOn = null)
{
Installers.Add(new ServiceProcessInstaller
{
Account = ServiceAccount.LocalSystem,
Username = username,
Password = password
});
Installers.Add(new ServiceInstaller
{
ServiceName = GetType().Name,
StartType = startType,
DisplayName = displayName ?? serviceName,
Description = description ?? string.Empty,
ServicesDependedOn = servicesDependedOn,
DelayedAutoStart = delayedAutoStart
});
}
ServiceInstaller中的ServiceName需要与安装服务时分配给ServiceInstaller的ServiceName相匹配。如果没有,那么您将获得此异常,因为它在尝试卸载之前找不到安装的服务。