2013-10-13 123 views
0

我想在運行時停止卸載應用程序。我想通過visual studio安裝和部署來完成它。 我在安裝程序類中添加了下面的代碼,然後在動作列表中調用,但它不起作用。如何防止應用程序運行時卸載?

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."); 
    } 

回答

1

試試這個,

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); 
} 
相關問題