Вы также можете добавить Custom Action в папку Commit пользовательских действий в вашем проекте установки. Это должен быть основной вывод проекта библиотеки классов с классом, унаследованным от System.Configuration.Install.Installer с атрибутом [RunInstaller (true)]. В этом классе вам нужно переопределить один базовый метод:
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
ProcessStartInfo psi = new ProcessStartInfo("sc", "failure \"You service name\" reset= 60 actions= restart/1000");
psi.CreateNoWindow = true;
Process proc = Process.Start(psi);
proc.WaitForExit();
}
Это настройка вашего сервиса для автоматического перезапуска после сбоя.
Чем когда вам нужно перезапустить сервис, вы можете сделать
Environment.FailFast("Self restarting service...");
Но у него есть один недостаток - в журнале событий будет выдано сообщение об ошибке.