protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
DialogResult result = DialogResult.None;
if (isExcelIsRunning())
{
result = MessageBox.Show("Excel is still running. Please save your work and close Excel, and then click \"Retry\" button to continue with installation.", "", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning);
}
while (result == DialogResult.Retry)
{
if (!isExcelIsRunning())
{
break;
}
}
}
//check if excel is currently running
private bool isExcelIsRunning()
{
bool flag = false;
Process[] xlProc = Process.GetProcessesByName("excel");
if (xlProc != null)
flag = true;
return flag;
}
以上是我即将用于安装程序类的代码。安装过程中警告用户有关运行过程
我想在这里实现的是,我需要安装程序来检查安装过程中当前是否正在运行Excel。如果它正在运行,那么在安装开始时应该会弹出消息以提醒用户关闭Excel,安装程序应该暂停,直到在进程列表中找不到Excel实例。
回到代码,我不认为while
块是非常正确的,因为如果在Excel仍在运行的同时用户单击“重试”按钮后可能会导致无限循环。
那么更好的方法是什么?我会很感激,如果有人在这里可以看看上面的代码,看看我可以改进的地方。
非常感谢。
为什么excel不能正常运行? –
因为这是一个Excel加载项安装程序,我认为如果在安装加载项时我们可以拥有一个干净的环境会很好。 – woodykiddy
这很有道理。虽然这里的问题是你应该用excel运行测试。毕竟,在您进行预安装检查后,没有任何东西阻止用户再次启动它。 –