Search code examples
c#windowswixwindows-services

Kill windows service forcefully in WIX


I have windows service which will get installed as part of wix installation . Problem is that, currently service is in production and it is not responding to stop due to some poorly written code in service OnStop method .

So next time when the user tries to install upgraded version installation will fail because service will never stop when wix tries to stop the service .

Is there any way in which i come to know if wix is taking too much time to uninstall and i can kill the process if i get that notification ?

Also, is there any way i can kill process based on product version ?

Thanks


Solution

  • I have found a solution for this after digging for sometime .

    I am creating new C# custom action project and i am sequencing my action before InstallInitialize.

    In my C# custom action method, i am reading the existing installed file version by using FileVersionInfo.GetVersionInfo(filePath);

    Then i am checking with desired version which i want to check and if condition matches i am killing my service process using

     foreach (Process proc in Process.GetProcessesByName("ProcessName"))
     {
          proc.Kill();
          session.Log("Service Killed");
     }
    

    in order to achieve this, Wix toolset v3.11.1 has to installed beforehand