Sandip Paul
Sandip Paul

Reputation: 21

How to prevent uninstall when the application is running ?

I want to stop uninstall an application when it is running. I want to do it by visual studio setup and deployment. I have added the below code in installer class and call then in action list but it is not working.

 public static bool ApplicationIsBusy()
    {
        Process application = null;
        foreach (var process in Process.GetProcesses())
        {
            if (!process.ProcessName.Contains("applicationname")) continue;
            application = process;
            break;
        }

        if (application != null && application.Responding)
        {
            return true;
        }

        else
        {
            return false;
        }

    }
    public override void Uninstall(IDictionary savedState)
    {

      base. Uninstall(savedState);
        if (ApplicationIsBusy()==true)
           throw new ApplicationException("Prevent uninstall while application busy.");
    }

  protected override void OnBeforeUninstall(IDictionary savedState)
    {
        base.OnBeforeUninstall(savedState);

        if (ApplicationIsBusy()==true)
            throw new ApplicationException("Prevent uninstall while application busy.");
    }

Upvotes: 0

Views: 102

Answers (1)

Kurubaran
Kurubaran

Reputation: 8902

Try this,

Method to check if application is running

private bool ApplicationIsBusy()
{
   bool isApplicationRunning = false;

   Process[] applicationProcess = Process.GetProcessesByName("applicationname");
   if (null != applicationProcess && applicationProcess.Length > 0)
   {
       isApplicationRunning = true;
   }

   return isApplicationRunning;
}

Uninstall method implementation

public override void Uninstall(IDictionary savedState)
{
  if (ApplicationIsBusy())
      throw new Exception("Prevent uninstall while application busy.");

  base. Uninstall(savedState);
}

Upvotes: 1

Related Questions