C# 使用InstallUtil.exe安装windows服务两次会造成状态管理问题
我已经在C#中创建了Windows服务。我还维护了一个状态,以便在卸载某些参数时将其还原。我已经编写了如下代码C# 使用InstallUtil.exe安装windows服务两次会造成状态管理问题,c#,windows-services,C#,Windows Services,我已经在C#中创建了Windows服务。我还维护了一个状态,以便在卸载某些参数时将其还原。我已经编写了如下代码 protected override void OnAfterInstall(IDictionary savedState) { SaveInitState(savedState); base.OnBeforeInstall(savedState); } protected override voi
protected override void OnAfterInstall(IDictionary savedState)
{
SaveInitState(savedState);
base.OnBeforeInstall(savedState);
}
protected override void OnAfterUninstall(IDictionary savedState)
{
RestoreState(savedState);
base.OnAfterUninstall(savedState);
}
当我安装服务,然后使用InstallUtil.exe取消安装时,我的代码工作得非常好。i、 e.状态已正确恢复
但我对下面的场景有疑问。
如果我先安装服务,然后再尝试重新安装,它会给我错误“服务已经存在”,这是正确的。但当我在上一步后卸载它时,服务将正确卸载,但在这种情况下,我的状态不会恢复
我的猜测是,在上述场景中,卸载后被重写的函数未调用。我还使用此函数中的事件日志对此进行了验证。那么回滚呢?您是否也在AfterRollback上调用SaveInitState状态?或者,如果执行了回滚,可能会删除保存的状态(或恢复以前的状态)?可以猜测,失败的第二次安装正在调用OnAfterInstall,这将覆盖以前保存的状态。在覆盖之前,您可能需要检查是否已保存状态。OnAfterInstall不会调用第二次安装。我用日志验证了它。